如何迭代并打印二叉树?

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)