98. 验证二叉搜索树

题目

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

  • 节点的左子树只包含 小于 当前节点的数。
  • 节点的右子树只包含 大于 当前节点的数。
  • 所有左子树和右子树自身必须也是二叉搜索树。

示例 1:

输入:root = [2,1,3]
输出:true

思路 (Switte)

中序遍历时,判断当前节点是否大于中序遍历的前一个节点,如果大于,说明满足 BST,继续遍历;否则直接返回 false。

盲点

一个合格的BST中序遍历结果是递增序列

递归结束条件 Base Case
当前节点为null,已经到叶子节点的子节点,返回true,表示这条路径没问题

更新pre的时机:自身节点和pre比完,想一下第一次比较就知道什么时候更新了

代码

public class o98 {
    long pre = Long.MIN_VALUE;
    public boolean isValidBST(TreeNode root) {
        if (root == null) {
            return true;
        }
        if (!isValidBST(root.left)) {
            return false;
        }
        if (root.val <= pre) {
            return false;
        }
        pre = root.val;
        return isValidBST(root.right);
    }

    public static void main(String[] args) {
        TreeNode n1 = new TreeNode(1);
        TreeNode n3 = new TreeNode(3);
        TreeNode n2 = new TreeNode(2, n1, n3);
        o98 main = new o98();
        System.out.println(main.isValidBST(n2));
    }
}
posted @ 2025-05-01 13:27  kuki'  阅读(17)  评论(0)    收藏  举报