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


      目录
      相关文章
      |
      存储 算法 Java
      解锁“分享文件”高效密码:探秘 Java 二叉搜索树算法
      在信息爆炸的时代,文件分享至关重要。二叉搜索树(BST)以其高效的查找性能,为文件分享优化提供了新路径。本文聚焦Java环境下BST的应用,介绍其基础结构、实现示例及进阶优化。BST通过有序节点快速定位文件,结合自平衡树、多线程和权限管理,大幅提升文件分享效率与安全性。代码示例展示了文件插入与查找的基本操作,适用于大规模并发场景,确保分享过程流畅高效。掌握BST算法,助力文件分享创新发展。
      【LeetCode 48】108.将有序数组转换为二叉搜索树
      【LeetCode 48】108.将有序数组转换为二叉搜索树
      213 0
      【LeetCode 47】669.修剪二叉搜索树
      【LeetCode 47】669.修剪二叉搜索树
      157 0
      【LeetCode 46】450.删除二叉搜索树的节点
      【LeetCode 46】450.删除二叉搜索树的节点
      256 0
      【LeetCode 45】701.二叉搜索树中的插入操作
      【LeetCode 45】701.二叉搜索树中的插入操作
      193 1
      【LeetCode 44】235.二叉搜索树的最近公共祖先
      【LeetCode 44】235.二叉搜索树的最近公共祖先
      198 1
      【LeetCode 42】501.二叉搜索树中的众数
      【LeetCode 42】501.二叉搜索树中的众数
      180 0
      【LeetCode 41】530.二叉搜索树的最小绝对差
      【LeetCode 41】530.二叉搜索树的最小绝对差
      198 0
      【LeetCode 40】98.验证二叉搜索树
      【LeetCode 40】98.验证二叉搜索树
      185 0
      【LeetCode 39】700.二叉搜索树中的搜索
      【LeetCode 39】700.二叉搜索树中的搜索
      189 0

      热门文章

      最新文章