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

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

http://www.nowcoder.com/questionTerminal/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
        List<Integer> list = new ArrayList<>();
        List<TreeNode> level = new LinkedList<>();
        level.add(root);
        int cnt = 0;
        int index1 = 0;
        int index2 = 0;
        while(cnt<2){
            for(TreeNode node:level){
                if(node!=null){
                   list.add(node.val);
                }else{
                    list.add(null);
                }
                if(node!=null&&(node.val==o1||node.val==o2)){
                    if(node.val==o1){
                        index1 = list.size();
                    }else{
                        index2 = list.size();
                    }
                    cnt++;
                }
            }
            List<TreeNode> tempLevel = new LinkedList<>();
            for(TreeNode node:level){
                if(node==null){
                    tempLevel.add(null);
                    tempLevel.add(null);
                }else {
                    tempLevel.add(node.left);
                    tempLevel.add(node.right);
                }
            }
            level = tempLevel;
        }
//         System.out.println(list+"");
        while(index1!=index2){
            if(index1>index2){
                index1 = index1/2;
            }else{
                index2 = index2/2;
            }
        }
        return list.get(index1-1);
    }

}
全部评论

相关推荐

我已成为0offer的糕手:别惯着,胆子都是练出来的,这里认怂了,那以后被裁应届被拖工资还敢抗争?
点赞 评论 收藏
分享
10-16 09:58
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务