• Lowest Common Ancestor of a Binary Search Tree -- LeetCode


    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
    

    For example, the lowest common ancestor (LCA) of nodes 2 and 8 is 6. Another example is LCA of nodes 2 and 4 is 2, since a node can be a descendant of itself according to the LCA definition.

     
    思路:利用二叉搜索树的性质,可以判断出p和q与当前root的位置关系。若p和q的值都小于root,则它们的公共祖先一定在root的左子树;若p和q的值都大于root,则它们的公共祖先一定在root的右子树。
    否则,q和q一定是一个在左子树一个在右子树,当前的root即是最小的公共祖先。
     1 class Solution {
     2 public:
     3     TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
     4         if (p->val < root->val && q->val < root->val)
     5             return lowestCommonAncestor(root->left, p, q);
     6         if (p->val > root->val && q->val > root->val)
     7             return lowestCommonAncestor(root->right, p, q);
     8         return root;
     9     }
    10 };
  • 相关阅读:
    主流的Nosql数据库的对比
    CCF考试真题题解
    排序
    2017-10-03-afternoon
    POJ——T 2728 Desert King
    51Nod——T 1686 第K大区间
    POJ——T 2976 Dropping tests
    2017-10-02-afternoon
    入参是小数的String,返回小数乘以100的String
    银联支付踩过的坑
  • 原文地址:https://www.cnblogs.com/fenshen371/p/5168861.html
Copyright © 2020-2023  润新知