题目
思路
使用递归的方法
一个树,左子树是二叉搜索,右子树是二叉搜索,那么只要左边的都比root小,右边的都比root大那么他就是一个二叉搜索树。
结束条件是没有节点和一个节点的时候都是二叉搜索树
代码
import java.util.*;
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence){
int num=sequence.length;
if(num==0)return false;
return VerifySquenceOfBST_part(sequence);
}
public boolean VerifySquenceOfBST_part(int [] sequence) {
int num=sequence.length;
if(num==0||num==1)return true;
int index=-1;//看一下index的初值应该是什么,=num可以使得当前面只有比跟小的数的时候不用考虑到之后下面一个循环
for(int i=0;i<num;i++){
if(sequence[i]>=sequence[num-1]){
index=i;
break;
}
}
boolean flag=true;
for(int i=index;i<num-1;i++){
if(sequence[i]<sequence[num-1])
flag=false;
}
return flag&&VerifySquenceOfBST_part(Arrays.copyOfRange(sequence,index,num-1))&&VerifySquenceOfBST_part(Arrays.copyOfRange(sequence,0,index));
}
}