生成,遍历和打印二进制树

问题描述 投票:0回答:1

我生成了完美平衡的二叉树,我想打印它。在输出中,只有0而不是我生成的数据。我认为这是因为函数printtree中的行显示print(tree.elem),导致了类self.elem = 0中的出现。

如何连接这两个功能generateprinttree

class BinTree:

    def __init__(self):
        self.elem = 0
        self.left = None
        self.right = None


def generate(pbt, N):
    if N == 0:
        pbt = None
    else:
        pbt = BinTree()
        x = input()
        pbt.elem = int(x)
        generate(pbt.left, N // 2)
        generate(pbt.right, N - N // 2 - 1)

def printtree(tree, h):
    if tree is not None:
        tree = BinTree()
        printtree(tree.right, h+1)
        for i in range(1, h):
            print(end = "......")
            print(tree.elem)
            printtree(tree.left, h+1)

希望有人可以帮助我。我是编码的初学者。

例如:N = 6,pbt = pbt,树= pbt,h = 0

输入:

1
2
3
4
5
6

和输出:

......5 
............6 
1 
............4 
......2 
............3
python binary-tree tree-traversal
1个回答
0
投票

我建议阅读以下内容:https://www.geeksforgeeks.org/tree-traversals-inorder-preorder-and-postorder/

[基本上,有三种遍历二叉树的方法;顺序,后序和预购。

打印语句的问题是,您正在将传入的树重新分配给一棵空树。

  if tree is not None:
        tree = BinTree()

对吗?如果树不是空的并且有东西,让我们将其重新分配给一棵空树。

遍历一棵树实际上比您想象的要简单得多。我认为复杂性在于尝试在脑海中想像所有结果如何,但是事实是遍历一棵树可以用3-4行完成。

© www.soinside.com 2019 - 2024. All rights reserved.