二叉搜索树的特点:遍历的时候,如果遇到比最后一个元素大的节点,就说明它的前面都比最后一个元素小,该元素后面的所有值都必须大于最后一个值,这两个条件必须都要满足。否则就说明该序列不是二叉树后序遍历。
代码:
public class Solution {
public boolean VerifySquenceOfBST(int [] arr) {
if(arr==null||arr.length==0){
return false;
}
return isBST(arr,0,arr.length-1);
}
private boolean isBST(int [] arr,int start ,int end){
if(start>=end){
return true;
}
int root_value=arr[end];
int i=start;
//正常循环完后i为第一个比arr[end] 大的数
while(i<end&&arr[i++]<arr[end]);
int temp=i;
//正常循环完后i==arr.length
while(i<end&&arr[i++]>arr[end]);
if(i!=end){
return false;
}else{
return isBST(arr,start ,temp-1)&&isBST(arr,temp,end-1);
}
}
}