是否可以在二进制搜索树中打印字符而不是整数?我在试着打印字母而不是数字。有没有办法把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)发布于 2021-05-16 12:54:51
我能想到的最简单的方法就是给数字加上一个偏移量,然后把它转换成字符:
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)输出:
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
ahttps://stackoverflow.com/questions/67553239
复制相似问题