//方案一:code
public class Solution {io
public boolean VerifySquenceOfBST(int [] sequence) { int len=sequence.length-1; if(len<0) return false; int i=0; while(len>0){ while(sequence[i]<sequence[len]) i++; while(sequence[i]>sequence[len]) i++; if(i<len) return false; i=0; len--; } return true; }
}class
//方案二while
public class Solution {co
public boolean VerifySquenceOfBST(int [] sequence) { int len=sequence.length-1; if(len<0) return false; return f(sequence,0,len); } public boolean f(int a[],int start,int end){ if(start==end) return true; int left=start; while(a[left]<a[end]&&left<end) left++; int right=left; while(a[right]>a[end]&&right<end) right++; if(right<end) return false; if(left==start||left==end)//只有左子樹或者只有右子樹 return f(a,start,end-1); else //既有左子樹又有右子樹 return f(a,start,left-1)&&f(a,left,end-1); }
}return
//感受彷佛方案一更好理解,方案二思路上好像更簡單些tar