当前位置: 首页 > news >正文

leetcode 98,判断二叉树为BST

方法一,记录子树的上界和下界,root的左子树一定小于root的值,root的右子树一定大于root的值,然后递归左子树和右子树

public class Solution {
  public boolean isValidBST(TreeNode root) {
      return isValid(root, null, null);
  }

  public boolean isValid(TreeNode root, Integer min, Integer max) {
      if(root == null) return true;
      if(min != null && root.val <= min) return false;
      if(max != null && root.val >= max) return false;
      
      return isValid(root.left, min, root.val) && isValid(root.right, root.val, max);
  }
}

方法二,中序遍历二叉树,并记录前继节点

public class Solution {
   TreeNode prev = null;

    /**
     * 判断一个树是否为二叉搜索树,使用中序遍历,记录前继节点的值
     *
     * @param root
     * @return
     */
    public boolean isValidBST(TreeNode root) {
        if (root == null) return true;
        //首先找到最左节点的值
        TreeNode left = root;
        while (left.left != null) {
            left = left.left;
        }
        prev = left;
        return isValid(root);
    }

    private boolean isValid(TreeNode root) {
        if (root == null) return true;
        if (!isValid(root.left)) return false;
        if (root != prev && root.val <= prev.val) return false;
        prev = root;
        return isValid(root.right);
    }
}

 

转载于:https://www.cnblogs.com/ljdblog/p/6721418.html

相关文章:

  • redis bind not error
  • lua实现热更方式
  • 元素
  • 基础面试题:面向对象和面向过程的区别,性能对比
  • 基础面试题: JDK 和 JRE
  • 基础面试题:java内存区域
  • 基础面试题:String StringBuffer 和 StringBuilder 的区别
  • 将Heap RID转换成RID格式
  • 数据库增删改查因文本包含sql语句造成语法错误问题解决方法
  • 基础面试题:== 与 equals 详解
  • 用ArrayList(解决约瑟夫问题)
  • 基础面试题:程序, 进程,线程,纤程,管程,超线程详解
  • 基础面试题:hashCode 与 equals
  • 2017.04.19 有趣的机械原理图
  • 详解TCP的三次握手与四次挥手及面试题(很全面)
  • Date型的使用
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • PHP的Ev教程三(Periodic watcher)
  • session共享问题解决方案
  • Spring-boot 启动时碰到的错误
  • Wamp集成环境 添加PHP的新版本
  • 动态规划入门(以爬楼梯为例)
  • 欢迎参加第二届中国游戏开发者大会
  • 回顾 Swift 多平台移植进度 #2
  • 技术:超级实用的电脑小技巧
  • 山寨一个 Promise
  • 深度学习在携程攻略社区的应用
  • 突破自己的技术思维
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 以太坊客户端Geth命令参数详解
  • 用jquery写贪吃蛇
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • Hibernate主键生成策略及选择
  • 湖北分布式智能数据采集方法有哪些?
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #NOIP 2014# day.1 T2 联合权值
  • (33)STM32——485实验笔记
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (七)理解angular中的module和injector,即依赖注入
  • (十六)Flask之蓝图
  • (学习日记)2024.01.09
  • (转)jdk与jre的区别
  • .aanva
  • .Net 8.0 新的变化
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .net core控制台应用程序初识
  • .NET大文件上传知识整理
  • .NET构架之我见
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • .skip() 和 .only() 的使用
  • .考试倒计时43天!来提分啦!