繁体   English   中英

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

[英]Lowest Common Ancestor of a Binary Tree - Recursive Solution

这是一个 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...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM