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);
}
}
一:

二:

中序遍历
中序遍历,看是否是升序
一开始定义一个最小数,然后让中序遍历的一次从前开始和他比,并把让他依次等于中序中的数与后一个数比较,提高效率
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);
}
}


浙公网安备 33010602011771号