两个给定节点的最低共同祖先(LCA);使一组值保持零;获得另一组正确的答案

发布于 2025-02-12 12:59:47 字数 909 浏览 1 评论 0原文

给定二进制搜索树(BST),找到BST中两个给定节点的最低共同祖先(LCA)。

  • root = [6,2,8,0,4,7,9,null,null,3,5],p = 2,q = 8; 预期输出= 6;我的输出= 6
  • root = [6,2,8,0,4,7,9,null,null,3,5],p = 2,q = 4; 预期输出= 2;我的输出=

使用print null我正在获取所需值,但是当i 返回其null时。 我想我在这里缺少一些非常基本的东西。

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

class Solution:
    def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
        def bst(root,p=p.val,q=q.val):
            if not root:
                return
            
            if p<root.val and q<root.val:
                bst(root.left)   
            elif p>root.val and q>root.val:
                bst(root.right)
            else:
                return root
        
        return bst(root)

Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.

  • root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8;
    expected Output = 6; My output = 6
  • root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4;
    expected Output = 2; My output = null

On using print I am getting the required value but when I return its null.
I think I am missing something very basic here.

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

class Solution:
    def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
        def bst(root,p=p.val,q=q.val):
            if not root:
                return
            
            if p<root.val and q<root.val:
                bst(root.left)   
            elif p>root.val and q>root.val:
                bst(root.right)
            else:
                return root
        
        return bst(root)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

疯狂的代价 2025-02-19 12:59:47

您可能需要尝试以下实现:

def lca(root, p, q):
    if root is None:
        return None
    if(root.val > p.val and root.val > q.val):
        return lca(root.left, p, q)
 
    if(root.val < p.val and root.val < q.val):
        return lca(root.right, p, q)
 
    return root

You may want to try the following implementation:

def lca(root, p, q):
    if root is None:
        return None
    if(root.val > p.val and root.val > q.val):
        return lca(root.left, p, q)
 
    if(root.val < p.val and root.val < q.val):
        return lca(root.right, p, q)
 
    return root
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文