如何迭代并打印二叉树?
How to iterate over and print a binary tree?
我在python中编写了一个二叉树结构。我可以为每个节点输入数据,但不能 迭代 它一旦插入过程结束(如 Java 12)并以树格式打印它。
class Tree:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
def Insert(i, p):
if i == 4:
return
else:
p.left = Tree(input("Enter Value for left node\n"))
p.right = Tree(input("Enter Value for right node\n"))
Insert(i+1, p.left, )
Insert(i+1, p.right, )
root = Tree(1)
Insert(0, root)
print(root)
当我打印 root
时,我得到它在内存中的位置(类似于:
<__main__.Tree object at 0x036D45D0>
)。
是否可以打印每个节点的所有值?
按顺序打印树的算法实际上非常简单。这几乎与您当前为插入所做的相同。这是一个 in-order 遍历的示例(排序的区别在于 print(root.data)
是在(前序)之前、(in-order 之间)还是在(后序)对其子项的递归调用之后) .
def Print_Tree(root):
if root is None:
return
Print_Tree(root.left)
print(root.data)
Print_Tree(root.right)
我在python中编写了一个二叉树结构。我可以为每个节点输入数据,但不能 迭代 它一旦插入过程结束(如 Java 12)并以树格式打印它。
class Tree:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
def Insert(i, p):
if i == 4:
return
else:
p.left = Tree(input("Enter Value for left node\n"))
p.right = Tree(input("Enter Value for right node\n"))
Insert(i+1, p.left, )
Insert(i+1, p.right, )
root = Tree(1)
Insert(0, root)
print(root)
当我打印 root
时,我得到它在内存中的位置(类似于:
<__main__.Tree object at 0x036D45D0>
)。
是否可以打印每个节点的所有值?
按顺序打印树的算法实际上非常简单。这几乎与您当前为插入所做的相同。这是一个 in-order 遍历的示例(排序的区别在于 print(root.data)
是在(前序)之前、(in-order 之间)还是在(后序)对其子项的递归调用之后) .
def Print_Tree(root):
if root is None:
return
Print_Tree(root.left)
print(root.data)
Print_Tree(root.right)