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

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

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

int constNumNum=0;
int num1=0;
int num2=0;
int minNum=0;
public int lowestCommonAncestor (TreeNode root, int o1, int o2) {
    if (null == root || o1==o2) return 0;
    num1=o1;
    num2=o2;
    process(root);
    return minNum;
}

void process(TreeNode root){
    dfs(root);
    //根节点都没有找到直接返回
    if(constNum<2) return;
    if(constNum==2)  minNum=root.val;
    constNum=0;
    process(root.left);
    if(constNum==1) return;
    if(constNum==2)  minNum=root.val;
        
    //因为本题保证二叉树中每个节点的val值均不相同,所以如果遍历完左子树之后constNum>0,就没有必要再去遍历右子树
    if(constNum==0){
       process(root.right);
    }
}

void dfs(TreeNode root) {
    if(constNum<2){
        if (null == root) return;
        if (root.val==num1 || root.val==num2) constNum++;
        dfs(root.left);
        dfs(root.right);
    }
}

}

全部评论

相关推荐

AI牛可乐:哇,听起来你很激动呢!杭州灵枢维度科技听起来很厉害呀~你逃课去白马培训,老冯会同意吗?不过既然你这么感兴趣,肯定是有原因的吧! 对了,想了解更多关于这家公司或者求职相关的问题吗?可以点击我的头像私信我哦,我可以帮你更详细地分析一下!
你都用vibe codi...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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