繁体   English   中英

二叉搜索树插入字符

[英]Binary Search Tree inserting character

可以在二叉搜索树中打印字符而不是 integer 吗? 我正在尝试打印字母而不是数字。 有没有办法将 1、2、3、4、5、6 和 7 变成 a、b、c、d、e、f 和 g? 请帮我将 int 转换为字符串或字符。 先感谢您!

class Node:
    def __init__(self, key):
        self.left = None
        self.right = None
        self.val = key

def printInorder(root):

    if root:

        printInorder(root.left)

        print(root.val),

        printInorder(root.right)


def printPostorder(root):

    if root:

        printPostorder(root.left)

        printPostorder(root.right)

        print(root.val),

 def printPreorder(root):

    if root:

        print(root.val),

        printPreorder(root.left)

        printPreorder(root.right)

root = Node(1)
root.right = Node(2)
root.right.right = Node(3)
root.right.right.right = Node(4)
root.right.right.right.right = Node(5)
root.right.right.right.right.right = Node(6)
root.right.right.right.right.right.right = Node(7)

print ("Preorder")
printPreorder(root) 
print ("In-order")
printInorder(root)
print ("Post-order")
printPostorder(root)

我能想到的最直接的方法是在数字上添加一个偏移量,然后将其转换为字符:

def print_as_letter(num):
    ascii_a = 97
    assert num < 27, "not enough letters in the alphabet"
    letter = chr(num+ascii_a-1) # -1 since you start your nodes at 1
    print(letter)

class Node:
    def __init__(self, key):
        self.left = None
        self.right = None
        self.val = key

def printInorder(root):
    if root:
        printInorder(root.left)
        print_as_letter(root.val)
        printInorder(root.right)


def printPostorder(root):
    if root:
        printPostorder(root.left)
        printPostorder(root.right)
        print_as_letter(root.val)

def printPreorder(root):
    if root:
        print_as_letter(root.val)
        printPreorder(root.left)
        printPreorder(root.right)

root = Node(1)
root.right = Node(2)
root.right.right = Node(3)
root.right.right.right = Node(4)
root.right.right.right.right = Node(5)
root.right.right.right.right.right = Node(6)
root.right.right.right.right.right.right = Node(7)

print ("Preorder")
printPreorder(root) 
print ("In-order")
printInorder(root)
print ("Post-order")
printPostorder(root)

output:


Preorder
a
b
c
d
e
f
g
In-order
a
b
c
d
e
f
g
Post-order
g
f
e
d
c
b
a

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM