leetcode98-验证二叉搜索树

发布时间 2023-10-26 21:35:46作者: realDevin

一开始没有考虑到左子树的所有节点都要小于根节点,右子树要大于根节点,本质上是边界没有考虑仔细,所以比较时需向上比较(和父节点)而不是向下比较(和子节点比大小)
根节点没有父节点,因此初始化时引用最大最小值即可,注意这里的数值范围

点击查看代码
class Solution {
    public boolean isValidBST(TreeNode root) {
        return isValid(root, Long.MIN_VALUE, Long.MAX_VALUE);
    }
    private boolean isValid(TreeNode root, long lower, long upper) {
        if (root == null) {
            return true;
        }
        if(root.val <= lower || root.val >= upper) {
            return false;
        } 
        return isValid(root.left, lower, root.val) && isValid(root.right, root.val, upper);
    }

}