//首先我们知道二叉搜索树的中序遍历就是将数组排序,也就是说数组排序过后就是二叉搜索树的中序遍历结果
//所以我们先将数组排序,得到它的中序遍历结果,然后现在有了后序和中序,我们先假设他是后序遍历的结果
//等中途推出毛病了,证明他就不是二叉树的后序遍历。因为中序是确定的,并且后序的最后一个肯定是根
//我们就判断这个根是否在中序数组里面就可以了,如果不在说明就不是后序遍历的结果
import java.util.Arrays;
public class Solution {
    private boolean result=true;
    public boolean VerifySquenceOfBST(int [] sequence) {
        if(sequence.length==0)
            return false;
       int[] mid=new int[sequence.length];
        for(int i=0;i<sequence.length;i++){
            mid[i]=sequence[i];
        }
        Arrays.sort(mid);
        isHaving(mid,0,mid.length-1,sequence,0,sequence.length-1);
        return result;
    }
    private void isHaving(int[] mid,int midstart,int midend,int[] last,int laststart,int lastend){
            if(midstart>midend||laststart>lastend)
                return ;
        int temp=last[lastend];
        boolean flag=false;
        for(int i=midstart;i<=midend;i++){
            if(temp==mid[i]){
                flag=true;//说明后序的根在中序数组中,继续进行下一个节点的判断
                isHaving(mid,midstart,i-1,last,laststart,laststart+i-midstart-1);//判断左子树
                isHaving(mid,i+1,midend,last,laststart+i-midstart,lastend-1);//判断右子树
            }
        }
        if(!flag)//说明后序的根不在中序数组,结果直接就是FALSE了
            result=false;
        }
}