二叉搜索树的后序遍历序列

题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。

public boolean VerifySequenceOfBST(int[] array){
        if(array == null || array.length <=0) return false;
        int N = array.length;
        return VerifySequenceOfBST(array,0,N-1);
        
    }
    public boolean VerifySequenceOfBST(int[] array,int left,int right){
        if(left>=right){
            return true;
        }
        int root = array[right];
        //i记录比root(根节点)大的第一个元素的索引
        int i = left;
        for(;i<right-1;i++){
            if(array[i]>root) break;
        }
        for(int j=i;j<right-1;j++){
            if(array[i]<root) return false;
        }
        return VerifySequenceOfBST(array,left,i-1)&&VerifySequenceOfBST(array,i,right-1);
    }

 

posted @ 2018-07-09 23:17  樱圃  阅读(103)  评论(0编辑  收藏  举报