版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ling_hun_pang_zi/article/details/81635848
24.二叉树的后序遍历序列
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
class Solution {
public:
bool VerifySquenceOfBST(vector<int> sequence) {
if (sequence.empty())
return false;
return SequenceJustiy(sequence, 0, sequence.size() - 1);
}
bool SequenceJustiy(vector<int> s, int start, int root)
{
if (start >= root)//递归终止的条件
return true;
//从后面开始找
int i = root;
while (i > start && s[i - 1] > s[root])
i--; //找到比根小的坐标
//从前面开始找,start到i-1 应该都要比根小
for (int j = start; j < i - 1; j++)
{
if (s[j] > s[root])
return false;
}
return SequenceJustiy(s, start, i - 1) && SequenceJustiy(s, i, root - 1);
}
};