Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何迭代并打印二叉树?_Python_Binary Tree - Fatal编程技术网

Python 如何迭代并打印二叉树?

Python 如何迭代并打印二叉树?,python,binary-tree,Python,Binary Tree,我用python编写了一个二叉树结构。我可以为每个节点输入数据,但一旦插入过程结束(如Java12),就无法迭代数据并以树格式打印 class Tree: def __init__(self, data): self.data = data self.left = None self.right = None def Insert(i, p): if i == 4: return else:

我用python编写了一个二叉树结构。我可以为每个节点输入数据,但一旦插入过程结束(如Java12),就无法迭代数据并以树格式打印

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)
当我打印
根目录时,我会得到它在内存中的位置(类似于:


是否可以打印每个节点的所有值?

按顺序打印树的算法实际上非常简单。这与您当前正在进行的插入操作几乎相同。下面是一个按顺序遍历的示例(顺序的区别在于
print(root.data)
是在对其子级的递归调用之前(preorder)、之间(按顺序)还是之后(post order))

def Print_Tree(root):
    if root is None:
        return
    Print_Tree(root.left)
    print(root.data)
    Print_Tree(root.right)