You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python代码实现二叉树后序遍历

二叉树后序遍历修改方案

问题定位

现有代码的遍历函数func2为前序遍历实现,执行顺序为「打印当前节点→遍历左子树→遍历右子树」,因此输出前序序列4 2 1 3 6 5 7,不符合后序遍历要求。
代码中func1为平衡二叉树构造函数,逻辑无问题,不需要修改。

后序遍历逻辑

二叉树后序遍历的访问顺序严格遵循:

  • 优先遍历当前节点的左子树
  • 左子树遍历完成后遍历当前节点的右子树
  • 左右子树全部遍历完成后,才访问当前节点的值

修改方式

仅需调整func2函数内的语句顺序,将节点值打印逻辑移动到左右子树递归调用的末尾即可。
修改后的完整代码:

class TreeNode(object):
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None
    
def func1(nums):
    if not nums:
        return None
    mid_val = len(nums)//2
    node = TreeNode(nums[mid_val])
    node.left = func1(nums[:mid_val])
    node.right = func1(nums[mid_val+1:])
    return node

def func2(node): 
    if not node: 
        return      
    func2(node.left) 
    func2(node.right)
    print(node.val)

result = func1([1, 2, 3, 4, 5, 6, 7])
func2(result)

结果验证

修改后代码运行输出的后序遍历序列为1 3 2 5 7 6 4,与构造出的平衡二叉树后序遍历结果完全一致。

内容的提问来源于stack exchange,提问作者turtleee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 11:24:15