面试算法-176-验证二叉搜索树

题目

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

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

节点的左

子树

只包含 小于 当前节点的数。

节点的右子树只包含 大于 当前节点的数。

所有左子树和右子树自身必须也是二叉搜索树。

示例 1:

输入:root = 2,1,3

输出:true

解1

java 复制代码
class Solution {
    TreeNode pre;

    public boolean isValidBST(TreeNode root) {
        boolean[] result = { true };
        dfs(root, result);
        return result[0];
    }

    public void dfs(TreeNode root, boolean[] result) {
        if (root == null) {
            return;
        }

        dfs(root.left, result);
        if (pre != null && pre.val >= root.val) {
            result[0] = false;
        }
        pre = root;
        dfs(root.right, result);
    }
}

解2

java 复制代码
class Solution {
    public boolean isValidBST(TreeNode root) {
        LinkedList<TreeNode> stack = new LinkedList<>();
        TreeNode cur = root;
        TreeNode pre = null;

        while(!stack.isEmpty() || cur != null){
            while(cur != null){
                stack.push(cur);
                cur = cur.left;
            }

            cur = stack.pop();
            if(pre != null && pre.val >= cur.val){
                return false;
            }

            pre = cur;
            cur = cur.right;
        }
        return true;
    }
}```
相关推荐
不好听61317 分钟前
JavaScript 的 this 到底指向谁?
javascript·面试
烬羽30 分钟前
面试官:聊聊 LocalStorage 和 this 指向?看这篇就够了
面试·程序员
复杂网络33 分钟前
多个 Claude Code 与多个 Codex 协同工作:设计与实现方案
算法
weedsfly38 分钟前
JS垃圾回收:从原理到项目实战,彻底根治内存泄漏
前端·javascript·面试
HjhIron16 小时前
面试常客:字符串算法从入门到进阶
算法·面试
大志说编程16 小时前
Agent面试真题06: 十分钟带你快速掌握Agent记忆管理高频面试题(附详细答案)
后端·面试·ai编程
众人皆醒我独醉16 小时前
Kubernetes 为什么不直接调度容器?非要套一层 Pod
面试
吴佳浩17 小时前
DeepSeek DSpark:Confidence-Scheduled Speculative Decoding 技术解析
人工智能·算法·deepseek
亮亮不想说话9588818 小时前
iOS底层探索 -- GCD分析
面试