中序二叉树遍历

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

我创建了带有一些节点的二叉树,并尝试使用字典获取中序遍历的结果,但它并没有真正起作用。 为什么列表不追加,即使它打印了结果?

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]

我也尝试过使用字典

python list traversal inorder
1个回答
0
投票

每次拨打

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
© www.soinside.com 2019 - 2024. All rights reserved.