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

给个后序遍历序列,判断是否是二叉搜索树的。

根据定义,最后一个是根,先判断能否按大小分成两部分,然后两部分分别递归。

code

class Solution {
public:
    bool verifyPostorder(vector<int>& postorder) {
        int n=postorder.size();
        if(n==0){
            return true;
        }
        int i=0;
        for(;i<n-1;i++){
            if(postorder[i]>postorder[n-1]){
                break;
            }
        }
        int j=i;
        for(;j<n-1;j++){
            if(postorder[j]<postorder[n-1]){
                return false;
            }
        }
        vector<int> left;
        vector<int> right;
        for(int k=0;k<i;k++){
            left.push_back(postorder[k]);
        }
        for(int k=i;k<n-1;k++){
            right.push_back(postorder[k]);
        }
        return (verifyPostorder(left) && verifyPostorder(right));
    }
};
posted @ 2020-06-23 10:21  Keane1998  阅读(102)  评论(0编辑  收藏  举报