// WAclassSolution{publicbooleanisValidBST(TreeNode root){returnvalid(root);}privateboolean valid (TreeNode node){if(node ==null)returntrue;boolean left =true, right =true;if(node.left !=null){
left =valid(node.left);if(node.left.val >= node.val)returnfalse;}if(node.right !=null){
right =valid(node.right);if(node.right.val <= node.val)returnfalse;}returntrue;}}
// ACclassSolution{publicbooleanisValidBST(TreeNode root){returncheck(root,Long.MIN_VALUE,Long.MAX_VALUE);}privatebooleancheck(TreeNode node,long min,long max){// Go back when no more childif(node ==null)returntrue;// Check each nodeif(node.val <= min || node.val >= max)returnfalse;returncheck(node.left, min, node.val)&&check(node.right, node.val, max);}}