【牛客网-名企高频面试题】 NC102 最近公共祖先——DFS

【牛客网-名企高频面试题】 NC102 最近公共祖先——DFS

题目描述

给定一棵二叉树以及这棵树上的两个节点 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。

示例1

输入

[3,5,1,6,2,0,8,#,#,7,4],5,1

返回值

3

public class 最近公共祖先 {
    /**
     *
     * @param root TreeNode类
     * @param o1 int整型
     * @param o2 int整型
     * @return int整型
     */
    public int lowestCommonAncestor (TreeNode root, int o1, int o2) {
        return CommonAncestor(root,o1,o2).val;
    }
    public TreeNode CommonAncestor(TreeNode root,int o1,int o2){
        if(root == null || root.val == o1 || root.val == o2){
            return root;
        }
        TreeNode left = CommonAncestor(root.left,o1,o2);
        TreeNode right = CommonAncestor(root.right,o1,o2);
        if(left == null){//都在右侧
            return right;
        }
        if(right == null){//都在左边
            return left;
        }
        return root;//在左右两侧
    }
}

posted @ 2021-01-11 22:12  your_棒棒糖  阅读(24)  评论(0)    收藏  举报