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

    /**
     * 235. Lowest Common Ancestor of a Binary Search Tree
     * 1. Time:O(n)  Space:O(n)
     * 2. Time:O(n)  Space:O(1)
     */
    
    // 1. Time:O(n)  Space:O(n)
    class Solution {
        public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
            int val = root.val;
            int val1 = p.val;
            int val2 = q.val;
            if(val1<val && val2<val)
                return lowestCommonAncestor(root.left,p,q);
            else if(val1>val && val2>val)
                return lowestCommonAncestor(root.right,p,q);
            else
                return root;
        }
    }
    
    // 2. Time:O(n)  Space:O(1)
    class Solution {
        public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
            int pVal = p.val;
            int qVal = q.val;
            TreeNode cur = root;
            while(cur!=null){
                int rootVal = cur.val;
                if(pVal<rootVal && qVal<rootVal)
                    cur = cur.left;
                else if(pVal>rootVal && qVal>rootVal)
                    cur = cur.right;
                else
                    return cur;
            }
            return null;
        }
    }
    
  • 相关阅读:
    冒泡排序
    选择排序
    JavaScript学习笔记---数组对象
    数字时钟
    操作字符串
    当前时间
    倒计时 定时器
    滚动文字
    查找替换文字
    JavaScript学习笔记---对象 时间对象 字符串对象
  • 原文地址:https://www.cnblogs.com/AAAmsl/p/12842077.html
Copyright © 2011-2022 走看看