生成、遍历和打印二叉树
Generating, traversing and printing binary tree
我生成了完美平衡的二叉树,我想打印它。在输出中只有 0 而不是我生成的数据。我认为这是因为函数 printtree
中的行 print(tree.elem)
,导致 class self.elem = 0
.
如何连接这两个函数 generate
和 printtree
?
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
我建议继续阅读:https://www.geeksforgeeks.org/tree-traversals-inorder-preorder-and-postorder/
基本上,有三种遍历二叉树的方法;顺序,post-顺序和预订。
您的 print 语句的问题在于,您正在将传入的树重新分配给空树。
if tree is not None:
tree = BinTree()
对吧?如果树不是 none 并且有一些东西,让我们将它重新分配给一个空树。
遍历一棵树实际上比您想象的要简单得多。我认为复杂性在于试图在脑海中想象这一切是如何进行的,但事实是遍历一棵树可以在 3 - 4 行中完成。
我生成了完美平衡的二叉树,我想打印它。在输出中只有 0 而不是我生成的数据。我认为这是因为函数 printtree
中的行 print(tree.elem)
,导致 class self.elem = 0
.
如何连接这两个函数 generate
和 printtree
?
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
我建议继续阅读:https://www.geeksforgeeks.org/tree-traversals-inorder-preorder-and-postorder/
基本上,有三种遍历二叉树的方法;顺序,post-顺序和预订。
您的 print 语句的问题在于,您正在将传入的树重新分配给空树。
if tree is not None:
tree = BinTree()
对吧?如果树不是 none 并且有一些东西,让我们将它重新分配给一个空树。
遍历一棵树实际上比您想象的要简单得多。我认为复杂性在于试图在脑海中想象这一切是如何进行的,但事实是遍历一棵树可以在 3 - 4 行中完成。