题解 | #二叉搜索树的后序遍历序列#

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

https://www.nowcoder.com/practice/a861533d45854474ac791d90e447bafd

#include <cstddef>
class Solution {
public:
    bool VerifySquenceOfBST(vector<int> sequence) {
        if(sequence.size() == 0){
            return false;
        }
        return myVeriftySequenceOfBST(sequence,0, sequence.size()-1);
    }

    bool myVeriftySequenceOfBST(vector<int>& sequence, int l, int r){
        if(l>=r){
            return true;
        }
        int root_val = sequence[r];
        int i = r;
        int right_tree_count = 0;
        for(;i>=l;i--){
            if(sequence[i] < root_val){
                right_tree_count = r - i-1;
                // 同时需要保证左边所有元素都小于root_val;
                while(i>=l&& sequence[i]< root_val)
                {
                    i--;
                }
                if(i>=l){
                    return false;
                }
                break;
            }
        }
        return myVeriftySequenceOfBST(sequence,l, r - right_tree_count-1) && myVeriftySequenceOfBST(sequence, r-right_tree_count, r-1);
    }
};

同时需要保证左子树的所有元素都小于根节点元素。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务