JZ23
//思路:最后一个数字是根x,确保前部分元素都小于x,后部分元素都大于x(递归)
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
if(sequence.length<1||sequence==null) //树为空 false
return false;
if(sequence.length==1) //树只有根,true
return true;
return dfs(sequence,0,sequence.length-1);
}
public boolean dfs(int[] seq,int start,int end){
if(start>end)
return true;
int index = start; //开始寻找小于x和大于x的分界
while(seq[end]>seq[index]&&index<end-1)
index++; //index为第一个大于x的值的下标
for(int i=end-1;i>index;i--){
if(seq[i]<seq[end]){ //若大于x的部分还有小于x的值 则不为二叉搜索树
return false;
}
}
return dfs(seq,start,index-1)&&dfs(seq,index,end-1);
}
}