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
相关产品推荐
相关产品推荐

