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

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

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都不为空时,说明这个节点是公共祖先节点
    }
};
全部评论

相关推荐

Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
想润的芹菜人狠话不多:把其中一个老总放中间都会得罪另一个
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务