98.验证二叉搜索树

题目描述

题目描述

题解一(递归,设定上下边界)

思路

递归思路

代码

java 复制代码
class Solution {
    public boolean isValidBST(TreeNode root) {
        // 使用 Long 的最大最小值来初始化边界,防止测试用例中出现 Integer.MAX_VALUE 导致判断错误
        return isValid(root, Long.MIN_VALUE, Long.MAX_VALUE);
    }

    private boolean isValid(TreeNode node, long lower, long upper) {
        if (node == null) {
            return true;
        }
        
        // 如果当前节点的值不在允许的范围内,则不是二叉搜索树
        if (node.val <= lower || node.val >= upper) {
            return false;
        }
        
        // 递归检查左子树(上限改为当前节点的值)和右子树(下限改为当前节点的值)
        return isValid(node.left, lower, node.val) && isValid(node.right, node.val, upper);
    }
}

题解二(中序遍历)

思路

中序遍历思路

代码

java 复制代码
class Solution {
    // 记录前一个遍历到的节点的值,初始设为 Long.MIN_VALUE
    //把 pre 声明为类的成员变量时,所有的递归调用都在共享这同一个变量
    private long pre = Long.MIN_VALUE;

    public boolean isValidBST(TreeNode root) {
        if (root == null) {
            return true;
        }
        
        // 1. 访问左子树
        if (!isValidBST(root.left)) {
            return false;
        }
        
        // 2. 访问当前节点:如果当前节点的值小于等于前一个节点的值,说明破坏了递增性
        if (root.val <= pre) {
            return false;
        }
        pre = root.val; // 更新 pre 为当前节点的值
        
        // 3. 访问右子树
        return isValidBST(root.right);
    }
}

复杂度分析

  • 时间复杂度:O(N)O(N)O(N),其中 NNN 是二叉树的节点数。每个节点恰好被访问一次
  • 空间复杂度:O(H)O(H)O(H),其中 HHH 是二叉树的高度。最坏情况下(树退化成链表),递归调用栈的深度为 NNN;最好情况下(平衡二叉树),深度为 log⁡N\log NlogN
相关推荐
OPEN-F10 小时前
C++20新特性精讲:概念、范围与三路比较
算法·c++20
@MMiL10 小时前
ST-link与J-link通俗易懂讲解
算法
RAOY的AI笔记10 小时前
GPT-6打破孪生素数猜想最新纪录:AI正在进入数学研究新时代?
人工智能·gpt·算法
Nil20811 小时前
leetcode 994腐烂的橘子
算法·leetcode·职场和发展
闻缺陷则喜何志丹11 小时前
【动态规划】P10726 [GESP202406 八级] 空间跳跃|普及+
c++·算法·动态规划·洛谷
嘻哈baby11 小时前
Go 函数中的参数为什么不支持默认值?
java·开发语言·jvm
慧都小项11 小时前
MyEclipse 2026:当 Agent、MCP 与 Java 26 进入 Eclipse 工作流
java·eclipse·springboot·copilot·myeclipse
地平线智能驾驶开发者11 小时前
模型量化入门:从浮点模型到低比特表示
算法·量化·算法工具链
地平线开发者11 小时前
模型量化入门:从浮点模型到低比特表示
算法
CoderYanger11 小时前
前端基础——JavaScript(基础语法)(下篇)
java·开发语言·前端·javascript·程序人生·面试·职场和发展