左子树上界是root.val,下界是Integer.MIN_VALUE;
右子树上界是Integer.MAX_VALU,下界是root.val;

public class Solution {
    /**
     * 
     * @param root TreeNode类 
     * @return bool布尔型
     */
    public boolean isValidBST (TreeNode root) {
        // write code here
        return dfs(root,Integer.MAX_VALUE,Integer.MIN_VALUE);
    }

    public boolean dfs(TreeNode root , int max , int min){
        if(root == null)
            return true;

        if(root.val >= max || root.val <= min)
            return false;

        return dfs(root.left , root.val , min) && dfs(root.right , max , root.val);
    }
}