题解 | #在二叉树中找到两个节点的最近公共祖先#(递归左右子树,寻找并返回找到的节点)

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

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

应该说明查找的两个节点不能重复吧。很容易引起歧义。

class Solution {
public:
    int lowestCommonAncestor(TreeNode* root, int o1, int o2) {
        return dfs(root, o1, o2)->val;
    }

    TreeNode* dfs(TreeNode* root, const int& p, const int& q){
        if(!root || root->val == p || root->val == q) return root;
        TreeNode* ls = dfs(root->left, p, q); 
        TreeNode* rs = dfs(root->right, p, q);
        if(ls == NULL) return rs; // 左右节点祖先在右边
        if(rs == NULL) return ls; // 左右节点祖先在左边
        return root;
    }
};
全部评论

相关推荐

就在我现在公司的隔壁每天经过都唏嘘不已(就是羡慕)什么时候可以到这里上班啊
柯基在debug:从大学毕业投简历到现在了,应届的时候我都面到终面了,现在工作四年了连简历初筛都过不了了
投递莉莉丝游戏等公司9个岗位
点赞 评论 收藏
分享
字节一直是我的白月光,考虑到转正还是拒了日常实习。
从明天开始狠狠卷JV...:为什么你释放的offer没流到我头上
点赞 评论 收藏
分享
仁者伍敌:牛子这些人还会点一个自动回复,boss都不带回复的
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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