Python前序递归二叉树遍历

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

我有这个代码:

def recursionTravel(node, returnArr = []):
    if node:
        returnArr.append(node.data)
        if node.left: returnArr.append(recursionTravel(node.left, returnArr))
        if node.right: returnArr.append(recursionTravel(node.right, returnArr))
    return node.data

# Pre-order traversal
def pre_order(node):
    output = []
    if node:
        output.append(node.data)
        if node.left: output.append(recursionTravel(node.left))
        if node.right: output.append(recursionTravel(node.right))
    return output

二叉树由节点组成:

[5, 10, 2, 'leaf']
输出应该是相同的:
[5, 10, 2, 'leaf']

问题:返回结果中缺少最后一个元素。返回值:

[5, 10, 2]

python binary-tree
1个回答
0
投票

只需更改 recusiveTravel 的最后一行即可。

def RecusiveTravel(node, returnArr[]):
  if node:
    returnArr.append(node.data)
    if node.left: returnArr.append(recursionTravel(node.left, returnArr))
    if node.right: returnArr.append(recursionTravel(node.right, returnArr))
    return returnArr

无需预购功能。只需从递归函数中调用它即可。应该可以。

© www.soinside.com 2019 - 2024. All rights reserved.