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;
        }
    }
    
  • 相关阅读:
    markdown 常用语法 (在macdown内使用正常)
    C# MessageBox常用用法
    C# 正则表达式匹配汉字
    C# 可视化读取文件、文件夹
    Xcode UUID查询
    Xcode 常用快捷键
    iOS __weak __strong WeakSelf StrongSelf
    iOS 图形图像动画 Core Animation
    iOS Runtime学习笔记
    iOS NSDate本地化
  • 原文地址:https://www.cnblogs.com/AAAmsl/p/12855343.html
Copyright © 2011-2022 走看看