题目描述
给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。
注:本题保证二叉树中每个节点的val值均不相同。
输入:[3,5,1,6,2,0,8,#,#,7,4],5,1
输出: 3
解题思路
由于递归要返回树的左子树或者右子树节点,而题目给出的返回值为int所以我们这里自己定义一个递归方法。
如果root == null 就说明root走到底了,如果root等于o1或者o2就说明o1或者o2是另一个的父节点,就直接返回root即可。
遍历其左子树和右子树,如果左子树等于null,就说明左子树里面不存在公共的祖先,就直接遍历右子树,如果右子树等于null,就说明右子树里面不存在公共的祖先,就直接遍历左子树。
最后直接返回root即可。
代码实现
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
publ