二叉搜索樹的特點:遍歷的時候,如果遇到比最後一個元素大的節點,就說明它的前面都比最後一個元素小,該元素後面的所有值都必須大於最後一個值,這兩個條件必須都要滿足。否則就說明該序列不是二叉樹後序遍歷。
代碼:
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);
}
}
}