代码如下
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
/*
* 中序遍历
*
* 本体采用中序遍历,即:左子树 -> 根节点 -> 右子树
* 用变量pre记录之前遍历节点的值,并与后面节点值进行比较
* 不符合返回false,直到遍历到最后
*/
class Solution {
long pre = Long.MIN_VALUE;
public boolean isValidBST(TreeNode root) {
if(root == null) {
return true;
}
if(!isValidBST(root.left)) {
return false; //访问左子树,如果不符合BST,返回false
}
if(root.val <= pre) {
return false; //访问当前节点,若节点小于中序遍历的前一个节点,则不满足BST,返回false
}
pre = root.val;
return isValidBST(root.right); //访问右子树
}
}