码迷,mamicode.com
首页 > 其他好文 > 详细

235. Lowest Common Ancestor of a Binary Search Tree

时间:2018-01-02 21:27:11      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:and   turn   gpo   自身   https   fine   ret   for   roo   

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.

找二叉搜索树中两个节点的最小公共父节点。父节点可以包括自身。

因为是二叉搜索树,使得搜索子节点的路径只剩下一条。

 

1、两个都大于root,找root->right;

2、两个都小于root,找root->left;

3、不符合1,2,就返回root。

class Solution {
public:
    TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
        if (!root)
            return root;
        int low = min(p->val, q->val);
        int high = max(p->val, q->val);
        int rt = root->val;
        if (high < rt)
            return lowestCommonAncestor(root->left, p, q);
        else if (low > rt)
            return lowestCommonAncestor(root->right, p, q);
        else
            return root;
    }
};

 

235. Lowest Common Ancestor of a Binary Search Tree

标签:and   turn   gpo   自身   https   fine   ret   for   roo   

原文地址:https://www.cnblogs.com/Zzz-y/p/8178900.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!