Python二叉树中序遍历报错:int对象无left属性原因排查
错误原因
你触发这个报错的核心是递归调用in_order方法时传入的参数类型不符合预期:
你的in_order方法第一个参数要求传入TreeNode类型的节点对象,但在递归调用时你写的是:
self.in_order(tree.left.val, result) self.in_order(tree.right.val, result)
这里tree.left.val和tree.right.val都是节点存储的数值,属于int类型,你把这个int值当成节点对象传给了下一层in_order方法。当下一层方法执行到if tree.left:时,此时的tree已经是int类型,自然没有left属性,就抛出了对应的AttributeError。
你最初传入的根节点p确实是TreeNode类型,并没有被解释器自动转换为int,报错的变量是递归调用时你主动传入的int类型的节点值,不是最初的p参数。
内容的提问来源于stack exchange,提问作者pickleRick
相关产品推荐
相关产品推荐

