NC102 最近公共祖先​ C++ 题解


若 root 是 p, q的 最近公共祖先 ,则只可能为以下情况之一:

p 和 q 在 root 的子树中,且分列 root 的 异侧(即分别在左、右子树中);
p = root,且 q 在 root 的左或右子树中;
q = root,且 p 在 root 的左或右子树中;

递归查找即可,代码如下:
/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @param o1 int整型 
     * @param o2 int整型 
     * @return int整型
     */
    TreeNode *find(TreeNode* root, int o1, int o2) {
        if(root == NULL || root->val == o1 || root->val == o2) return root;
        TreeNode *l = find(root->left, o1, o2);
        TreeNode *r = find(root->right, o1, o2);
        if(!l) return r;
        if(!r) return l;
        return root;
    }
    
    int lowestCommonAncestor(TreeNode* root, int o1, int o2) {
        // write code here
        TreeNode *ret = find(root, o1, o2);
        return ret->val;
    }
};

#牛客题霸##题解#
全部评论

相关推荐

  24届校招生,加上入职实习,到现在已经满一年工龄了。很感谢自己,能争取到一份还算不错的工作,最后也能顺利转正,也很心疼自己,即使职场上待了一年,依旧无法摆脱无尽的内耗。    今天请假喘口气,一个人去寺庙祈福,希望新的一年身心健康,也希望自己职场顺意,发誓再也不要任人摆布了。刚许完没走两步就收到了加急的工作任务,赶紧蹲台阶上处理。。自己都被自己窝囊笑了。回到家天黑了,又收到领导新的工作消息,想到假期结束,又要面对讨厌的一切,就止不住的心悸,感觉自己永远有做不完的事。  真的真的很讨厌非工作时间的加急信息,以至于染上了每十分钟就要点开手机的后...
_凡_:即使职场上待了一年,依旧无法摆脱无尽的内耗。 今天请假喘口气,一个人去寺庙祈福,希望新的一年身心健康,也希望自己职场顺意,发誓再也不要任人摆布了。刚许完没走两步就收到了加急的工作任务,赶紧蹲台阶上处理。。自己都被自己窝囊笑了。回到家天黑了,又收到领导新的工作消息,想到假期结束,又要面对讨厌的一切,就止不住的心悸,感觉自己永远有做不完的事。 我看到这些窒息感就铺面而来
投递58到家等公司8个岗位 >
点赞 评论 收藏
分享
2024-12-23 06:50
东北大学 Java
给点吧求求了:3点发的帖子,害怕😰
点赞 评论 收藏
分享
2024-12-02 22:30
西安理工大学 Java
M_bao:简历排版换一下吧,第二个项目换了吧,咱门双非学历本来就不行还用这种项目太掉分了,300沟通一个要简历你打招呼也有问题。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务