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

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

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

//BST的后序序列的合法序列是,对于一个序列S,最后一个元素是x (也就是根),如果去掉最后一个元素的序列为T,那么T满足:T可以分成两段,前一段(左子树)小于x,后一段(右子树)大于x,且这两段(子树)都是合法的后序序列。完美的递归定义 : )
#include <vector>
class Solution {
  public:
    bool judge(vector<int>& a, int l, int r) {
        if (l >= r) {
            return true;
        }
        int i = r ;
        while (i  > l && a[i-1] > a[r]) {
            --i;
        }
        for (int j = i-1; j >= l; --j) {
            if (a[j] > a[r]) {
                return false;
            }
        }
        return judge(a, l, i-1) && judge(a, i , r - 1);
    }
    bool VerifySquenceOfBST(vector<int> sequence) {
        if (sequence.empty()) {
            return false;
        }
        return judge(sequence, 0, sequence.size() - 1);
    }
};

全部评论

相关推荐

头像
11-09 12:17
清华大学 C++
out11Man:小丑罢了,不用理会
点赞 评论 收藏
分享
感性的干饭人在线蹲牛友:🐮 应该是在嘉定这边叭,禾赛大楼挺好看的
点赞 评论 收藏
分享
今天 13:29
已编辑
湖南铁道职业技术学院 后端
小红书 后端选手 n*16*1.18+签字费期权
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务