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

Node类中递归查找二叉树根到节点路径的叶子节点报错问题

问题修正方案

你的代码报错的核心原因是:当节点为叶子节点时,self.left或self.right为None,直接调用None.apend()会触发AttributeError——None对象不存在apend方法。

修正后的代码

def apend(self, arr, target):
    """ arr is the list which has the path from root to target node, self is the root """
    if self is None:
        return False
    arr.append(self.data)
    if self.data == target:
        return True
    # 先判断子节点是否存在,再执行递归调用
    left_found = self.left.apend(arr, target) if self.left else False
    right_found = self.right.apend(arr, target) if self.right else False
    if left_found or right_found:
        return True
    arr.pop()
    return False

关键修改说明

  • 新增对self.left和self.right的非空校验:若子节点为None,直接返回False,避免调用不存在的方法。
  • 拆分左右子树的查找逻辑,用变量分别接收结果后再做逻辑或判断,确保单侧子节点为空时不会阻断整体流程,同时保留原有的路径回溯逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:05:27