题解 | #二叉搜索树的最近公共祖先#

二叉搜索树的最近公共祖先

http://www.nowcoder.com/practice/d9820119321945f588ed6a26f0a6991f

  • 利用二叉搜索树的性质,当当前节点值比p和q都要大时,说明最小公共节点在左子树上;当当前节点值比p和q都要小时,说明最小公共节点在右子树上
  • 当当前节点值介于p和q之间时,说明已经找到最近公共节点
class Solution {
public:
    int lowestCommonAncestor(TreeNode* root, int p, int q) {
        return FindAncestor(root,  p,  q)->val;
    }
    
    TreeNode* FindAncestor(TreeNode* root, int p, int q){
        if(!root) return nullptr;
        if(root->val == p || root->val == q)
            return root;
        if(p < root->val && q < root->val) return FindAncestor(root->left,  p,  q);
        else if(p > root->val && q > root->val) return FindAncestor(root->right, p, q);
        else return root;
    }
};
全部评论

相关推荐

2024-12-29 19:48
河北科技大学 Java
没事就爱看简历:问题不在于简历:1、大学主修课程学那么多应用语言,作为计算机专业是很难理解的。 2、技能部分,每一个技能点的后半句话,说明对熟练,熟悉的标准有明显误会。 3、项目应该是校企合作的练习吧,这个项目你负责什么,取得了哪些成果都没有提及,只是列举了你认为有技术含量的点,而这些都有成熟的实现。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务