二叉搜索树中序遍历是有序的,所以中序遍历中,如果pre结点的值大于当前结点的值则说明该树不是二叉搜索树。

public class Solution {
    TreeNode pre = null;
    public boolean isValidBST (TreeNode root) {
        if(root == null){
            return true;
        }
        boolean left = isValidBST(root.left);
        if(pre != null && pre.val > root.val){
            return false;
        }
        pre = root;
        boolean right = isValidBST(root.right);
        return left && right;
    }
}