zoukankan      html  css  js  c++  java
  • LeetCode 236: Lowest Common Ancestor of a Binary Tree

    /**
     * 236. Lowest Common Ancestor of a Binary Tree
     * 1. Time:O(n)  Space:O(h)
     * 2. Time:O(n)  Space:O(n)
     */
    
    // 1. Time:O(n)  Space:O(h)
    class Solution {
        public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
            if(root==null || root==p || root==q) return root;
            TreeNode left = lowestCommonAncestor(root.left,p,q);
            TreeNode right = lowestCommonAncestor(root.right,p,q);
            if(left!=null && right!=null) return root;
            else return left==null? right:left;
        }
    }
    
    // 2. Time:O(n)  Space:O(n)
    class Solution {
        public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
            Stack<TreeNode> stack = new Stack<>();
            HashMap<TreeNode,TreeNode> map = new HashMap<>();
            stack.push(root);
            map.put(root,null);
            while(!map.containsKey(p) || !map.containsKey(q)){
                TreeNode cur = stack.pop();
                if(cur.left!=null){
                    stack.push(cur.left);
                    map.put(cur.left,cur);
                }
                if(cur.right!=null){
                    stack.push(cur.right);
                    map.put(cur.right,cur);
                }
            }
            HashSet<TreeNode> set = new HashSet<>();
            while(p!=null){
                set.add(p);
                p = map.get(p);
            }
            while(q!=null){
                if(set.contains(q))
                    break;
                q = map.get(q);
            }
            return q;
        }
    }
    
  • 相关阅读:
    arclinux安装报错unknown trust
    linux微型主机服务器配置
    spring data jpa + hibernate
    又纠结activiti
    comet4j
    shiro纠结之旅
    ubuntu更改jdk版本的问题
    struts上传
    java实现四则运算
    6 个重构方法可帮你提升 80% 的代码质量(转)
  • 原文地址:https://www.cnblogs.com/AAAmsl/p/12855343.html
Copyright © 2011-2022 走看看