【发布时间】:2020-09-15 21:44:16
【问题描述】:
class Node:
def __init__(self,value):
self.value = value
self.right = None
self.left = None
class Tree:
def __init__(self,root):
self.root = Node(root)
def print_tree(self):
return self.preorder_print(self.root,"")
def preorder_print(self,start,traversal):
if start:
print('step 1')
traversal = self.preorder_print(start.left, traversal)
print('step 2')
traversal +=(str(start.value)+"-")
print('step 3')
traversal = self.preorder_print(start.right, traversal)
return traversal
"""
F
B G
A D I
C E H
In- order print: A->B->C->D->E->F->G->H->I
"""
tree = Tree("F")
tree.root.left = Node("B")
tree.root.right = Node("G")
tree.root.right.right = Node("I")
tree.root.right.right.left = Node("H")
tree.root.left.left = Node("A")
tree.root.left.right = Node("D")
tree.root.left.right.left = Node("C")
tree.root.left.right.right = Node("E")
print(tree.print_tree())
我知道“第 1 步”递归会转到最左端,Node("A"),但是当到达 A 之后,
func 是如何脱离递归的?它是否会进入下一行“第 2 步”?
“第 1 步”中该遍历的返回值是多少?
【问题讨论】:
-
#2 中的“A”是什么?
-
@ScottHunter
"A"显然是Node("A") -
运行它时真的有效吗?您似乎从未在任何地方返回值,也从未进行任何形式的检查以查看左侧或右侧是否仍有节点。
-
@SeanPayne:都在那儿:
return traversal和if start:。 -
@quamrana 谢谢。这里已经是深夜了。我花了几个小时调试。显然是时候停止工作了 xD
标签: python recursion binary-tree