import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
int pre = Integer.MIN_VALUE; // 上一个值,默认为最小值
public boolean isValidBST(TreeNode root) {
if (root == null) {
return true;
}
boolean leftFlag = isValidBST(root.left);
if (!leftFlag) {
return false;
}
// 因为二叉搜索树有个特性,中序遍历的结果是递增的,所以前一个值大于当前值时,则为false。
if (pre > root.val) {
return false;
}
pre = root.val; // 更新pre
return isValidBST(root.right); // 右子树也要满足此规律
}
}