剑指Offer:二叉搜索树的后序遍历序列

来源:互联网 发布:网络算法与复杂性理论 编辑:程序博客网 时间:2024/06/06 15:39

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


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


class Solution {public:    bool VerifySquenceOfBST(vector<int> sequence) {        if(sequence.empty())    return false;        return judge(sequence);    }private:    bool judge(vector<int> sequence){        int sz=sequence.size(),pos{-1};        if(sz<=2)    return true;        int rootVal=sequence.back();        for(int i=0;i<sz-1;++i){            if(sequence[i]>rootVal){                pos=i;                break;            }        }        bool bres1{true},bres2{true};        if(pos>0){            vector<int> left(sequence.begin(),sequence.begin()+pos);            if(*(max_element(left.begin(),left.end()))>rootVal){                return false;            }//重点            bres1=judge(left);        }        if(pos!=-1){//注意end-1            vector<int> right(sequence.begin()+pos,sequence.end()-1);            if(*(min_element(right.begin(),right.end()))<rootVal){                return false;            }//重点            bres2=judge(right);        }        return bres1&&bres2;    }};
0 0
原创粉丝点击