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

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

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) {
        ArrayList<Integer> array1 = new ArrayList<>();
        ArrayList<Integer> array2 = new ArrayList<>();
        searchOnTree(root, array1, o1);
        searchOnTree(root, array2, o2);
        int result = 0;
        int index1 = array1.size() - 1;
        int index2 = array2.size() - 1;
        while (index1 >= 0 && index2 >= 0 && array1.get(index1) == array2.get(index2)) {
            result = array1.get(index1);
            index1--;
            index2--;
        }
        return result;
    }

    private boolean searchOnTree(TreeNode root, ArrayList<Integer> array, Integer target) {
        if (root == null) {
            return false;
        }
        boolean isSearch = root.val==target || searchOnTree(root.left, array, target) || searchOnTree(root.right,
                array, target);
        if (isSearch) {
            array.add(root.val);
        }
        return isSearch;
    }
}
全部评论

相关推荐

合不合适,我自己说了才算
码农索隆:hr:“真执着啊,来我公司当法人吧”
点赞 评论 收藏
分享
06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 12:23
转人工😡
门口唉提是地铁杀:五次握手了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务