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

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

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
        TreeNode ancestor = dfs(root, o1, o2);
        return ancestor.val;
    }
    public TreeNode dfs(TreeNode root, int o1, int o2){
        if(root == null) return null;
        if(root.val == o1 || root.val == o2) return root;


        TreeNode l = dfs(root.left, o1, o2);
        TreeNode r = dfs(root.right, o1, o2);
        // 要么在一个节点的左右子树中,要么某一个节点是另一个节点的祖先节点。        

        if(l != null && r !=null) return root;
        return l == null ? r:l;




    }
}
全部评论

相关推荐

码农索隆:我头回见校招简历把个人优势写在最前面的,是我老了吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务