//二叉搜索樹條件左子樹<根<右子樹 //後序遍歷說明最後一個元素是該二叉樹的根節點 //1 找到該樹的左子樹 //2 判斷右子樹是否都大於根的值 //3 一樣操做,該根的左右子樹是否成立 public class Solution {code
public boolean VerifySquenceOfBST(int [] sequence) { if(sequence.length==0) return false; return juge(sequence,0,sequence.length-1); } public boolean juge(int a[],int start,int end){ //說明該二叉搜索樹已經完成遍歷,沒發現錯誤的,該返回true if(start>=end) return true; int i; //找到該樹大於根節點的位置,也就是找到該樹的右子樹 for(i=start;i<end;i++) if(a[i]>a[end]) break; //判斷是否符合右子樹都大於根點的點,不,返回false,不然繼續判斷 for(int j=i;j<end;j++) if(a[j]<a[end]) return false; //在一樣遍歷該根節點的左右子樹 return juge(a,0,i-1) && juge(a,i,end-1); }
}io