www

导航

二叉树的后序遍历序列

    bool helper(vector<int> &input, int start, int end)
    {
        if(start>=end)
            return true;
        int mark=input[end];
        int pos=-1;
        for(int i=start; i<end; i++)
        {
            if(input[i]>mark)
            {
                pos=i;
                break;
            }
        }
        if(pos==-1||pos==end)
        {
            return helper(input, start, end-1);
        }
            
        for(int i=pos; i<end; i++)
        {
            if(input[i]<mark)
            {
                return false;
            }
        }
        return helper(input,start,pos-1)&&helper(input,pos,end-1);
    }
    
    bool VerifySquenceOfBST(vector<int> input) 
    {
        int len=input.size();
        if(len==0)
            return false;
        return helper(input, 0, len-1);
    }

 

posted on 2017-09-22 19:21  www_practice  阅读(241)  评论(0编辑  收藏  举报