【牛客网-名企高频面试题】 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;//在左右两侧
}
}