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

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

实现语言:Java

public class Solution {
    public boolean VerifySquenceOfBST(int [] arr) {
        int size=arr.length;
        if(size==0){
            return false;
        }
        if(size==1){
            return true;
        }
        return helper(arr,0,size-1);
    }
    private boolean helper(int[] arr,int start,int end){
        if(start>=end){
            return true;
        }
        int i=end;
        while(i>start&&arr[i-1]>arr[end]){
            --i;
        }
        for(int j=start;j<i;++j){
            if(arr[j]>arr[end]){
                return false;
            }
        }
        return helper(arr,start,i-1)&&helper(arr,i,end-1);
    }
}

 

posted on 2018-12-29 19:07  lina2014  阅读(92)  评论(0编辑  收藏  举报

导航