题解 | #二叉搜索树的后序遍历序列#
二叉搜索树的后序遍历序列
https://www.nowcoder.com/practice/a861533d45854474ac791d90e447bafd
class Solution {
public:
bool VerifySquenceOfBST(vector<int> sequence) {
if (sequence.empty())
return false;
return order(sequence, sequence.size());
}
bool order(const vector<int> &sequence, int length) {
if (sequence.empty() || length <= 0)
return false;
int root = sequence[length - 1];
int i = 0;
for (; i < length - 1; i++) {
if (sequence[i] > root)
break;
}
int j = i;
for (; j < length - 1; j++) {
if (sequence[j] < root)
return false;
}
bool left = true;
if (i > 0) {
vector<int> tmp(sequence.begin(), sequence.begin() + i);
left = order(tmp, i);
}
bool right = true;
if (i < length - 1) {
vector<int> tmp(sequence.begin() + i, sequence.end() - 1);
right = order(tmp, length - i - 1);
}
return (left && right);
}
};

