我创建了带有一些节点的二叉树,并尝试使用字典获取中序遍历的结果,但它并没有真正起作用。 为什么列表不追加,即使它打印了结果?
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def inoder(bomj):
visited = []
if bomj:
inoder(bomj.left)
print(bomj.val)
visited.append(bomj.val)
inoder(bomj.right)
return visited
tree = TreeNode(1)
tree.left = TreeNode(2)
tree.right = TreeNode(3)
tree.left.left = TreeNode(4)
tree.left.right = TreeNode(5)
tree.left.left.left = TreeNode(7)
tree.right.left = TreeNode(6)
print(inoder(tree))
Result:
7
4
2
5
1
6
3
[1]
我也尝试过使用字典
每次拨打
internal
时,您都会重置 inorder
。您需要一个位于递归之外的变量inorder
。
def inorder(bomj):
visited = []
def internal(bomj):
if bomj:
internal(bomj.left)
print(bomj.val)
visited.append(bomj.val)
internal(bomj.right)
internal(bomj)
return visited