• LeetCode 235 二叉搜索树的最近公共祖先


    LeetCode 235 二叉搜索树的最近公共祖先

    问题描述:
    二叉搜索数性质

    • 当前根节点值大于/等于p节点值
    • 当前根节点值小于/等于q节点值
    • 返回当前根节点
    class Solution {
        public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
            if(root==null || p==null || q==null) {
                return null;
            }
            if(p.val>q.val) {
                TreeNode tmp = p;
                p = q;
                q = tmp;
            }
            return find(root, p, q);
        }
    
        public TreeNode find(TreeNode root, TreeNode p, TreeNode q) {
            if(root==null) {
                return null;
            }
            //左
            else if(root.val>q.val) {
                return find(root.left, p, q);
            }
            //右
            else if(root.val<p.val) {
                return find(root.right, p, q);
            }
            //中
            return root;
        }
    }
    

    暴力递归
    返回第一个满足条件的节点:

    • 该节点左子树中包含p
    • 该节点右子树中包含q

    执行用时:7 ms, 在所有 Java 提交中击败了39.70%的用户
    内存消耗:40.4 MB, 在所有 Java 提交中击败了5.05%的用户

    class Solution {
        private TreeNode target;
    
        public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
            find(root, p, q);
            return target;
        }
    
        public boolean[] find(TreeNode root, TreeNode p, TreeNode q) {
            if(root==null || targt!=null) {
                return new boolean[]{false, false};
            }
            
            boolean[] res = new boolean[2];
            res[0] = root==p? true: false;
            res[1] = root==q? true: false;
    
            boolean[] res1 = find(root.left, p, q);
            boolean[] res2 = find(root.right, p, q);
            res[0] |= res1[0] | res2[0];
            res[1] |= res1[1] | res2[1];
            if(target==null && res[0]&res[1]) {
                target = root;
            }
    
            return res;
        }
    }
    
  • 相关阅读:
    Linux下基于PAM机制的USB Key的制作
    IP-route管理路由
    Linux下CPU主板监控工具lm_sensors
    两个网卡隔离方法
    关机后内存的数据是怎么丢失的呢?
    6.0 移动端页面布局
    CyberPlayer 使用教程
    5.10 HTML5 音频和视频
    让Ecshop网店系统用户自动登陆
    設定 Bootstrap/SASS/Bower/gulp (Windows平台)
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13742282.html
Copyright © 2020-2023  润新知