题解 | #二叉搜索树的最近公共祖先#

二叉搜索树的最近公共祖先

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

import java.util.*; public class Solution { int constNum=0; int num1=0; int num2=0; int minNum=0; public int lowestCommonAncestor (TreeNode root, int p, int q) { if (null == root || p==q) return 0; num1=p; num2=q; 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,就没有必要再去遍历右子树
    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);
    }
}

}

全部评论

相关推荐

05-14 20:34
门头沟学院 Java
窝补药贝八股:管他们,乱说,反正又不去,直接说680
点赞 评论 收藏
分享
牛客83700679...:简历抄别人的,然后再投,有反馈就是简历不行,没反馈就是学历不行,多投多改只要技术不差机会总会有的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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