- 序列长度为0,返回false;
- 序列长度为1,返回true;
- 后序遍历的最后一个元素为根节点,二叉搜索树左子节点元素一定小于根值,右子节点元素一定大于根值;
- 递归判断左子树和右子树。
class Solution {
public:
bool VerifySquenceOfBSTMin(vector<int> sequence, int start, int end) {
if (start >= end) return true;
int low = start;
while (low < end && sequence[low] < sequence[end]) ++low;
for (int i = low; i < end; i++) {
if (sequence[i] < sequence[end]) return false;
}
return VerifySquenceOfBSTMin(sequence, start, low - 1) &&
VerifySquenceOfBSTMin(sequence, low, end - 1);
}
bool VerifySquenceOfBST(vector<int> sequence) {
if (sequence.size() == 0) return false;
if (sequence.size() == 1) return true;
return VerifySquenceOfBSTMin(sequence, 0, sequence.size() - 1);
}
};