生成、遍历和打印二进制文件

2024-05-17 00:34:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我生成了完全平衡的二叉树,我想把它打印出来。在输出中只有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,tree=pbt,h=0

输入:

1
2
3
4
5
6

以及输出:

......5 
............6 
1 
............4 
......2 
............3

Tags: 函数selfrightnonetreeifdefleft
1条回答
网友
1楼 · 发布于 2024-05-17 00:34:13

我建议你仔细阅读:https://www.geeksforgeeks.org/tree-traversals-inorder-preorder-and-postorder/

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

print语句的问题是,您正在将传入的树重新分配给一个空树

  if tree is not None:
        tree = BinTree()

是吗?如果树不是“无”并且有一些内容,让我们将其重新分配给空树

遍历一棵树实际上比你想象的要简单得多。我认为复杂性来自于在你的脑海中想象它是如何运作的,但事实是遍历一棵树可以用3-4行来完成

相关问题 更多 >