zoukankan      html  css  js  c++  java
  • leetcode刷题14

    今天刷的题是LeetCode236题,是给定一个二叉树,以及二叉树中的两个节点,然后找出两个节点的最近公共祖先

    上一道题我自己的解法在这道题依旧适用,即找出两节点到根节点的路径,然后遍历。

    我自己的解法,当时为了找到这条路径费了很多劲儿。这道题参考了哈LeetCode的官方解答思路,说可以用父指针的方式来解决。因此这里用了一个map集合

    key保存的是当前节点,value保存的是父节点

    首先是一个递归遍历,找出除了根节点外的所有节点的父节点

    然后是查找。具体地代码如下:

    import LeetcodePart6.TreeNode;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class LowestCommonAncestor_236_middle {
        private static Map<TreeNode,TreeNode> parent;
        public static TreeNode solution(TreeNode root, TreeNode p,TreeNode q){
            parent=new HashMap<>();
            getAncestor(root);
            List<TreeNode> plist=new ArrayList<>();
            List<TreeNode> qlist=new ArrayList<>();
            plist.add(p);
            qlist.add(q);
            while (parent.get(p)!=null){
                TreeNode node=parent.get(p);
                plist.add(node);
                p=node;
            }
            while (parent.get(q)!=null){
                TreeNode node=parent.get(q);
                qlist.add(node);
                q=node;
            }
            for (int i = 0; i <plist.size() ; i++) {
                for (int j = 0; j <qlist.size() ; j++) {
                    if (plist.get(i)==qlist.get(j)){
                        return plist.get(i);
                    }
                }
            }
            return root;
        }
        public static void getAncestor(TreeNode root){
            if (root==null) return;
            if (root.left!=null){
                parent.put(root.left,root);
                getAncestor(root.left);
            }
            if (root.right!=null){
                parent.put(root.right,root);
                getAncestor(root.right);
            }
            return;
        }
    }
  • 相关阅读:
    流程控制之if判断
    各种运算符
    输入和输出
    垃圾回收机制(详细)
    3/5 作业
    3/4 作业
    数据类型
    变量
    Checkout 显示 URL /../../.. 不存在
    Tomcat8 访问 manager App 失败
  • 原文地址:https://www.cnblogs.com/cquer-xjtuer-lys/p/11393430.html
Copyright © 2011-2022 走看看