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

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

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

/**
 * struct TreeNode {
 *    int val;
 *    struct TreeNode *left;
 *    struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @param o1 int整型 
     * @param o2 int整型 
     * @return int整型
     */
    int ans;
    bool helper(TreeNode* root, int o1, int o2){
        if(root == NULL) return false;
        bool isLeft = helper(root -> left, o1, o2);
        bool isRight = helper(root -> right, o1, o2);
        if((isLeft && isRight) 
           || (isLeft && (root -> val == o1 || root -> val == o2)) 
           || (isRight && (root -> val == o1 || root -> val == o2))) ans = root -> val;
        return isLeft || isRight || root -> val == o1 || root -> val == o2;
    }
    int lowestCommonAncestor(TreeNode* root, int o1, int o2) {
        // write code here
        helper(root, o1, o2);
        return ans;
    }
};
全部评论

相关推荐

02-15 22:29
门头沟学院 Java
点赞 评论 收藏
分享
黑皮白袜臭脚体育生:简历统一按使用了什么技术实现了什么功能解决了什么问题或提升了什么性能指标来写会更好另外宣传下自己的开源仿b站微服务项目,GitHub已经410star,牛客上有完整文档教程,如果觉得有帮助的话可以点个小星星,蟹蟹
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务