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

二叉树后序遍历函数调用报错:name 'postorder'未定义问题排查

问题原因及修复方案

错误根源

你在Solution类的方法内部调用postorder时,没有使用self.前缀。Python中,类的成员方法必须通过实例(即self)来访问,否则会被当作全局函数查找,而你并没有定义全局的postorder函数,因此触发NameError。

另外原代码中TreeNode的__init__方法存在缩进错误,self.left和self.right的缩进不一致,这也会导致语法问题,需要一并修正。

修正后的代码

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

from typing import Optional, List

class Solution:
    def postorder(self, root, a):
        if not root:
            return
        # 调用类内方法必须加self.
        self.postorder(root.left, a)
        self.postorder(root.right, a)
        a.append(root.val)
    
    def postorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
        a = []
        # 同样需要加self.调用类内方法
        self.postorder(root, a)
        return a

关键修改点

  • 所有类内部调用postorder的地方,都加上self.前缀,比如self.postorder(root.left, a)
  • 修正TreeNode类中__init__方法的缩进问题,保证成员变量定义的缩进统一
  • 补充了必要的类型导入from typing import Optional, List(原代码中使用了Optional和List但未导入,也会触发报错)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 00:59:50