二叉树的最低公共祖先-递归解决方案



这是一个leetcode问题:https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/

我的代码在这里

class CommonAncestor:
def traverse(self, root, A, B):
if not root:
return None
return self.helper(root, A, B)
def helper(self, node, A, B):
print(node)
if node:        
left = self.helper(node.left, A, B)
right = self.helper(node.right, A, B)
if node.val == A or node.val == B:
return node
if left and right:
return node
elif left or right:
return left or right
else:
return None

有人能解释一下为什么这个代码不起作用吗?它在我的VS代码上运行得很好,但无法通过测试用例。我在这里创建了完全相同的树:

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

obj = CommonAncestor()
root = TreeNode(3)
root.left = TreeNode(5)
root.left.left = TreeNode(6)
root.left.right = TreeNode(2)
root.left.right.left = TreeNode(7)
root.left.right.right = TreeNode(4)
root.right = TreeNode(1)
root.right.left = TreeNode(0)
root.right.right = TreeNode(8)
root.right.right.left = None
root.right.right.right = None

我不知道这是leetcode特定的还是我的代码。。。提前感谢!

好的,想好了。。。LeetCode的输入类型是TreeNode,而我的输入类型则是int.…

最新更新