98. 验证二叉搜索树 --力扣 --JAVA

简介: 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。-2^31 <= Node.val <= 2^31 - 1

 题目

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。

有效 二叉搜索树定义如下:

    • 节点的左子树只包含 小于 当前节点的数。
    • 节点的右子树只包含 大于 当前节点的数。
    • 所有左子树和右子树自身必须也是二叉搜索树。
    • -2^31 <= Node.val <= 2^31 - 1

    解题思路

      1. 需要当前节点的值和父节点作比较,所以基础方法无法满足需要对方法进行重载或建立新的函数;
      2. val的值超出Integer.MAX_VALUE所以需要通过Long的最大最小值来进行初始化赋值;
      3. 循环结束条件,当前节点为空;
      4. 限定当前节点val的取值范围,并进行递归循环。

      代码展示

      class Solution {
          public boolean isValidBST(TreeNode root) {
              return isVaild(root, Long.MIN_VALUE, Long.MAX_VALUE);
          }
          public boolean isVaild(TreeNode root, long min, long max){
              if (root == null) {
                  return true;
              }
              long x = root.val;
              return min < x && x < max && isVaild(root.left, min, x) && isVaild(root.right, x, max);
          }
      }

      image.gif


      目录
      相关文章
      |
      1月前
      |
      算法 Java
      [Java·算法·简单] LeetCode 27. 移除元素 详细解读
      [Java·算法·简单] LeetCode 27. 移除元素 详细解读
      23 1
      |
      17天前
      |
      算法 Java C语言
      C++和Java中的随机函数你玩明白了吗?内附LeetCode470.rand7()爆改rand10()巨详细题解,带你打败LeetCode%99选手
      C++和Java中的随机函数你玩明白了吗?内附LeetCode470.rand7()爆改rand10()巨详细题解,带你打败LeetCode%99选手
      |
      1月前
      |
      算法 Java
      [Java·算法·简单] LeetCode 13. 罗马数字转整数 详细解读
      [Java·算法·简单] LeetCode 13. 罗马数字转整数 详细解读
      23 0
      |
      1月前
      |
      算法 Java
      [Java·算法·简单] LeetCode 392. 判断子序列 详细解读
      [Java·算法·简单] LeetCode 392. 判断子序列 详细解读
      28 0
      |
      1月前
      |
      存储 canal 算法
      [Java·算法·简单] LeetCode 125. 验证回文串 详细解读
      [Java·算法·简单] LeetCode 125. 验证回文串 详细解读
      23 0
      |
      1月前
      |
      JavaScript Java
      java生成验证码并进行验证
      java生成验证码并进行验证
      24 2
      |
      11天前
      |
      Oracle Java 关系型数据库
      Java 开发者必备:JDK 版本详解与选择策略(含安装与验证)
      Oracle Java SE 支持路线图显示,JDK 8(LTS)支持至2030年,非LTS版本如9-11每6个月发布且支持有限。JDK 11(LTS)支持至2032年,而JDK 17及以上版本现在提供免费商用许可。LTS版本提供长达8年的支持,每2年发布一次。Oracle JDK与OpenJDK有多个社区和公司构建版本,如Adoptium、Amazon Corretto和Azul Zulu,它们在许可证、商业支持和更新方面有所不同。个人选择JDK时,可考虑稳定性、LTS、第三方兼容性和提供商支持。
      24 0
      |
      13天前
      Leetcode1038. 从二叉搜索树到更大和树(每日一题)
      Leetcode1038. 从二叉搜索树到更大和树(每日一题)
      |
      1月前
      |
      算法 Java
      [Java·算法·简单] LeetCode 28. 找出字符串中第一个匹配项的下标 详细解读
      [Java·算法·简单] LeetCode 28. 找出字符串中第一个匹配项的下标 详细解读
      23 0
      |
      1月前
      |
      算法 Java
      [Java·算法·简单] LeetCode 14. 最长公共前缀 详细解读
      [Java·算法·简单] LeetCode 14. 最长公共前缀 详细解读
      20 0