简单解释一下把:
利用递归,咱先看看条件
1 . 左子树是搜索二叉树
2. 右子树是搜索二叉树
3. 左子树必须 <= 本节点
4. 右子树必须 > 本节点
public static ReturnData{
int min;
int max;
boolean isBST;
public ReturnData(boolean isBS , int ma , int mi){
isBST = isBS;
max = ma;
min = mi;
}
}
public ReturnData f(Node head){
if(head == null){
return null;
}
ReturnData l = f(head.left);
ReturnData r = f(head.right);
int max = head.val;
int min = head.val;
boolean isBST = false;
if(head.left != null){
max = Math.max(max , l.max);
min = Math.min(min , l.min);
}
if(head.right!= null){
max = Math.max(max , r.max);
min = Math.min(min , r.min);
}
if(l !=null && (l.isBST == true || l.max >= head.value)){
isBST = true;
}
if(r !=null && (r.isBST == true || head.value >= r.min)){
isBST = true;
}
return new REturnData(isBST , max , min);
}