https://leetcode-cn.com/problems/validate-binary-search-tree/
[bug]
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean isValidBST(TreeNode root) {
return dfs(root, Integer.MAX_VALUE, Integer.MIN_VALUE, false, false);
}
boolean dfs(TreeNode root, int l, int r, boolean ll, boolean rr){
if(ll=true && root.val<=l){
return false;
}
if(rr=true && root.val>=r){
return false;
}
if(root.left!=null){
//r = r==-1?root.val:Math.min(r, root.val);
if(rr==false){
r = root.val;
rr = true;
}
else {
r = Math.min(r, root.val);
}
if(!dfs(root.left, l, r, ll, rr)){
return false;
}
}
if(root.right!=null){
//l = l==-1?root.val:Math.max(l, root.val);
if(ll==false){
l = root.val;
ll = true;
}
else {
l = Math.max(l, root.val);
}
if(!dfs(root.right, l, r, ll, rr)){
return false;
}
}
return true;
}
}