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

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

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

import java.util.*;
//采用递归方法,二叉树解题的常用方法
/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param root TreeNode类 
     * @param o1 int整型 
     * @param o2 int整型 
     * @return int整型
     */
    public int lowestCommonAncestor (TreeNode root, int o1, int o2) {
        // write code here
        return leastCommonAncestors(root,o1,o2).val;
    }
    
    public TreeNode leastCommonAncestors(TreeNode root, int o1, int o2){
        //递归出口,空指针
        if(root == null){
            return null;
        }
        //递归出口
        if(root.val == o1 || root.val == o2){
            return root;
        }
        //递归左子树
        TreeNode left = leastCommonAncestors(root.left,o1,o2);
        //递归右子树
        TreeNode right = leastCommonAncestors(root.right,o1,o2);
        //如果left为空,则说明两个节点在root的右子树上
        if(left == null){
            return right;
        }
        //如果right为空,则说明两个节点在root的左子树上
        if(right == null){
            return left;
        }
        
        //如果left,right都不为空,则说明两个节点在root上
        return root;
    }
}
全部评论

相关推荐

好久没来牛客了,今天面试了一个实习生,感觉对方形象乱糟糟的,头发像鸡窝,像刚睡醒就来面试了,第一印象直接大打折扣,感觉我没有受到应有的尊重,再加上对方业务能力也一般,我直接挂掉;大家面试的时候还是好好收拾一下自己吧,争取给面试官留下个好印象,面试这东西还是存在眼缘的
MinJerous:更在乎本质,应该看候选人是否和岗位需要的能力匹配。洗脸/不洗头都无所谓吧,说不定人家刚刚通宵准备,就是为了这场面试呢?你挂掉他核心原因还是他能力不行,而不是形象。就算形象好点,能力不行你敢给过吗,不怕后面+1质疑你
点赞 评论 收藏
分享
自由水:这HR已经很好了,多的是已读不回和不读了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务