Loading

98. 验证二叉搜索树

递归

class Solution {
    public boolean isValidBST(TreeNode root) {
        return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE);
    }

    public boolean isValidBST(TreeNode node, long lower, long upper) {
        if (node == null) {
            return true;
        }
        if (node.val <= lower || node.val >= upper) {
            return false;
        }
        return isValidBST(node.left, lower, node.val) && isValidBST(node.right, node.val, upper);
    }
}


一:

image

二:

image

中序遍历

中序遍历,看是否是升序
一开始定义一个最小数,然后让中序遍历的一次从前开始和他比,并把让他依次等于中序中的数与后一个数比较,提高效率

class Solution {
    long pre = Long.MIN_VALUE;//A constant holding the minimum value a long can have, -263.   保持 long 类型的最小值的常量,该值为 -263。
    public boolean isValidBST(TreeNode root) {
        if (root == null) {
            return true;
        }
        // 访问左子树
        if (!isValidBST(root.left)) {
            return false;
        }
        // 访问当前节点:如果当前节点小于等于中序遍历的前一个节点,说明不满足BST,返回 false;否则继续遍历。
        if (root.val <= pre) {
            return false;
        }
        pre = root.val;
        // 访问右子树
        return isValidBST(root.right);
    }
}

image

posted @ 2021-12-14 15:54  Zhbeii  阅读(36)  评论(0)    收藏  举报