public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
if(sequence==null||sequence.length==0){
return false;
}
//即使输入的数组,也可以利用二叉树的后序遍历递归模式;
//因为是后序遍历,所以要熟悉它的特点是最后一个元素是根节点;
//接下来寻找根节点左右侧元素是否满足大小要求;
return helpVerify(sequence,0,sequence.length-1);
}
public boolean helpVerify(int[] sq,int start,int root){
if(start>=root)return true;
int rootVal=sq[root];
int i=start;
int mid=start;
for(i=start;i<root&&sq[i]<rootVal;i++);
if(i<root){
mid=i;
}
//这里的条件判断注意一些,i==root的判断!!!!!!!!!
if(i==root){
return true;
}
for(i=mid;i<root&&sq[i]>rootVal;i++);
if(i<root){
return false;
}
boolean left=helpVerify(sq,start,mid-1);
boolean right=helpVerify(sq,mid,root-1);
return left&&right;
}
}