*题解 | #在二叉树中找到两个节点的最近公共祖先#

在二叉树中找到两个节点的最近公共祖先

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

  • 递归法寻找公共祖先
class Solution {
public:
    int lowestCommonAncestor(TreeNode* root, int o1, int o2) {
        // write code here
        return commonAncestor(root,  o1,  o2)->val;
    }
    
    TreeNode* commonAncestor(TreeNode* root, int o1, int o2){
        if(!root) return nullptr;
        if(root->val == o1 || root->val == o2)
            return root;
        TreeNode* left = commonAncestor(root->left, o1, o2);
        TreeNode* right = commonAncestor(root->right, o1, o2);
        if(!left) return right; //两个节点都在右侧 
        if(!right) return left;//两个节点都在左侧
        return root; //left和right都不为空时,说明这个节点是公共祖先节点
    }
};
全部评论

相关推荐

但听说转正率很低,我现在有在实习了,好纠结要不要去
熬夜脱发码农:转正率低归低,但是实习的经历你可以拿着,又不是说秋招不准备了
点赞 评论 收藏
分享
昨天 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
05-28 12:15
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务