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

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

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

相关推荐

27届毕业,最近想找一段大厂实习,感觉简历有些问题,好多都不给面,求大佬们指点,最近好焦虑
后端劝退第91人:我从后端的角度分析一下你的第一个项目,我感觉亮点不是很突出。因为我是因为组内有需求,临时上手学react干活。我用到的技术基本就cover你那个智慧园区管理平台的很多亮点了。那作为比较专业的前端,你上述的内容是不是有点单薄呢。感觉还得包装
点赞 评论 收藏
分享
09-21 21:14
门头沟学院
否极泰来来来来:和他说:这里不好骂你,我们加个微信聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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