`

Lowest Common Ancestor of a Binary Search Tree——Tree

 
阅读更多

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

According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes v and w as the lowest node in T that has both v and w as descendants (where we allow a node to be a descendant of itself).”

        _______6______
       /              \
    ___2__          ___8__
   /      \        /      \
   0      _4       7       9
         /  \
         3   5
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def lowestCommonAncestor(self, root, p, q):
        """
        :type root: TreeNode
        :type p: TreeNode
        :type q: TreeNode
        :rtype: TreeNode
        """
        minNum = p.val if p.val <= q.val else q.val
        maxNum = p.val if p.val > q.val else q.val
        if maxNum < root.val:
            return self.lowestCommonAncestor(root.left, p, q)
        if minNum > root.val:
            return self.lowestCommonAncestor(root.right, p, q)
        return root.val

 

 

分享到:
评论

相关推荐

    java-leetcode题解之Lowest Common Ancestor of a Binary Tree.java

    java java_leetcode题解之Lowest Common Ancestor of a Binary Tree.java

    Binary Tree – Lowest Common Ancestor 题型总结

    Lowest Common Ancestor of a Binary Search Tree  Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST. According to the definition of LCA on Wikipedia:...

    c语言-leetcode题解之0236-lowest-common-ancestor-of-a-binary-tree

    c c语言_leetcode题解之0236_lowest_common_ancestor_of_a_binary_tree

    [数据结构与算法]JAVA二叉树题目总结(包含常见题目部分LeetCode题解)

    Lowest Common Ancestor of a Binary Search Tree等。通过解决这些题目,你可以加深对二叉树的理解,并提升解决问题的能力。 总结,Java中的二叉树题目不仅要求对数据结构有深入理解,还需要灵活运用算法。不断...

    Leetcode综合题解md版.zip

    比如"二叉树的最近公共祖先"(Lowest Common Ancestor of a Binary Tree)需要掌握树的遍历策略,而"有效的井字游戏"(Valid Tic-Tac-Toe)则需要理解博弈论的Nim游戏规则。 每道题的Markdown文件通常包含以下几个...

    Leetcode部分试题解析

    12. **Lowest Common Ancestor of a Binary Search Tree**:二叉搜索树的最近公共祖先。利用二叉搜索树的性质,可以有效地向上遍历找到最近公共祖先。 13. **Product of Array Except Self**:不包含自身的数组乘积...

    leetcode常见的100热点算法题

    5. **二叉树与图**:二叉树题目如"Binary Tree Inorder Traversal"(二叉树的中序遍历)和"Lowest Common Ancestor of a Binary Tree"(二叉树的最近公共祖先),图题目如"Shortest Path in Bidirectional Graph"...

    郭华阳《RMQ与LCA问题》

    **RMQ(Range Minimum Query)与LCA(Lowest Common Ancestor)问题**是图论与数据结构领域中的两个重要概念,广泛应用于算法设计和优化。这篇由郭华阳所著的国家队论文深入探讨了这两个问题及其解决方案。 **RMQ...

    Daily_Leetcode:每天一个Leetcode问题

    问题235:“最近的公共祖先(Lowest Common Ancestor of a Binary Search Tree)” 这是一个关于二叉搜索树的问题。在二叉搜索树中,每个节点的值都大于其左子树中的所有节点值,小于其右子树中的所有节点值。这个问题...

    Algorithms-Leetcode-Javascript:Javascript中的算法解析。 Leetcode-Geeksforgeeks-职业生涯

    要在控制台中运行特定问题,请转至文件test,将调用添加到测试函数( test() ),然后在控制台node &lt;problem&gt; (例如, node LeetcodeProblems/Lowest_Common_Ancestor_of_a_Binary_Tree.js )。 Leetcode问题 名称...

    leetcode答案-CodeBase:基本算法问题

    2. 树形结构:树相关的题目如“Binary Tree Inorder Traversal”(二叉树的中序遍历)和“Lowest Common Ancestor of a Binary Tree”(二叉树的最近公共祖先)等,要求对二叉树的遍历和搜索有深入理解。 3. 排序与...

    leetcode分类-leetcode:leetcodeJavaScript题解

    例如,"二叉树的最近公共祖先"(Lowest Common Ancestor of a Binary Tree)题目,需要理解深度优先搜索或层次遍历的方法。 高级算法: 高级算法通常涉及到更深层次的思考和优化,如位运算、贪心策略、分治法等。...

    leetcode卡-leet-code-may-challenge:包含对MayChallenge(LeetCode)上发布的问题的解决方案。

    2. 二叉树:例如“Lowest Common Ancestor of a Binary Tree”涉及到二叉树的遍历和节点查找。 3. 图论:如“Course Schedule II”可能涉及拓扑排序和深度优先搜索。 4. 字符串处理:如“Valid Palindrome II”要求...

    leetcode:LeetCode练习

    4. **树结构**:如“二叉树的最近公共祖先”(Lowest Common Ancestor of a Binary Tree),需要找到给定节点的最近公共祖先。 5. **动态规划**:如“最长连续序列”(Longest Consecutive Sequence),要求找到一个...

    LeetCode:AC源代码

    "二叉树的最近公共祖先"(Lowest Common Ancestor of a Binary Tree)可以用递归或迭代的方法解决。 5. **图**:图问题可能涉及到深度优先搜索(DFS)、广度优先搜索(BFS)等。例如,"最短路径"(Shortest Path in...

    手稿_V1.093

    在给定的文件中,我们讨论的是一个与计算机科学相关的编程问题,具体是关于二叉搜索树(Binary Search Tree, BST)的最近公共祖先(Lowest Common Ancestor, LCA)问题。这个问题来源于LeetCode的一个挑战,其目标是...

    Leetcode-best-DSA-问题:必须执行这些leetcode编码问题以提高您的问题解决能力

    如“二叉树的最近公共祖先”(Lowest Common Ancestor of a Binary Tree)和“拓扑排序”(Topological Sort)。 8. **动态规划**:动态规划用于解决具有重叠子问题和最优子结构的问题,如“背包问题”(Knapsack ...

    LeetCode

    例如,“二叉树的最近公共祖先”(Lowest Common Ancestor of a Binary Tree)问题,要求找到二叉树中两个节点的最近公共祖先。 8. **动态规划**:这是一种优化问题解决的策略,常用于解决背包问题、最长公共子序列...

    高级数据结构-----刘汝佳

    **LCA(Lowest Common Ancestor)**是最近公共祖先问题,即给定一棵树和两个节点,找到这两个节点的最近公共祖先。常用的求解方法包括预处理法、倍增法等。 以上就是《高级数据结构》一书中所介绍的关键知识点,涵盖...

    tree:流行树算法的Javascript实现

    7. **最近公共祖先(Lowest Common Ancestor, LCA)**:查找给定两个节点在树中的最近公共祖先。 在实际的"tree-master"项目中,可能包含了这些算法的实现,以及用于测试和展示的示例数据。通过阅读和学习这些代码,...

Global site tag (gtag.js) - Google Analytics