zoukankan      html  css  js  c++  java
  • [leetcode]_Validate Binary Search Tree

    题目:判断一棵二叉树是否合法。要求二叉树满足 左子树所有值 < 当前值 < 右子树所有值,并且所有点都满足这个条件。

    思路:

       1、从当前根节点判断,求根节点左子树最大值maxLeft,右子树最小值minRight。

         2、判断当前节点值是否满足 maxLeft < current < minRight。

            3、如果满足,则递归地判断其左右子树是否同样合法。

    代码:

     1     public boolean isValidBST(TreeNode root) {
     2         if(root == null) return true;
     3         
     4         int maxLeft = maxValue(root.left);
     5         int minRight = minValue(root.right);
     6         
     7         return maxLeft < root.val && minRight > root.val && isValidBST(root.left) && isValidBST(root.right);
     8     }
     9     
    10     public int maxValue(TreeNode node){
    11         if(node == null) return Integer.MIN_VALUE;
    12         int leftMax = maxValue(node.left);
    13         int rightMax = maxValue(node.right);
    14         return Math.max(node.val , Math.max(leftMax , rightMax));
    15     }
    16     
    17     public int minValue(TreeNode node){
    18         if(node == null) return Integer.MAX_VALUE;
    19         int leftMin = minValue(node.left);
    20         int rightMin = minValue(node.right);
    21         return Math.min(node.val , Math.min(leftMin , rightMin));
    22     }

    网络上还有一种更简单的解法。今天好累啊,明天再做了。see you~

  • 相关阅读:
    K8s网络插件flannel与calico
    calico部署与网卡绑定
    脚本基本函数
    k8s迁移工具-helm
    mysql不识别中文
    日志收集系统对比
    VM虚拟机安装后的网络设置
    微擎目录结构介绍
    amazeui笔记-web组件
    jQuery 数据
  • 原文地址:https://www.cnblogs.com/glamourousGirl/p/3771197.html
Copyright © 2011-2022 走看看