题解 | #二叉搜索树的后序遍历序列#
二叉搜索树的后序遍历序列
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); } };