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; } }