public boolean validate(TreeNode root, long min, long max){
if(root == null)
return true;
if(root.val <= min || root.val >= max){
return false;
}
return validate(root.left, min, root.val) && validate(root.right, root.val, max);
}
public boolean isValidBST(TreeNode root) {
return validate(root, Long.MIN_VALUE, Long.MAX_VALUE );
}