版权声明:本文为原创博客,未经允许,请勿转载。 https://blog.csdn.net/u013095333/article/details/88599568
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
链接
代码
class Solution {
public:
int first = 0;
bool VerifySquenceOfBST(vector<int> sequence) {
if(this->first == 0 && sequence.size() == 0){
return false;
}
this->first = 1;
bool flag = true;
vector<int> s1;
vector<int> s2;
if(sequence.size() == 0){
return true;
}
if(sequence.size() == 1){
return true;
}
int len = sequence.size();
int root = sequence[len-1];
int i = 0;
for(i = 0; sequence[i] < root; i++){
s1.push_back(sequence[i]);
}
for( ; i < len-1; i++){
if(sequence[i] < root){
flag = false;
break;
}
else{
s2.push_back(sequence[i]);
}
}
if(flag){
flag = VerifySquenceOfBST(s1) && VerifySquenceOfBST(s2);
}
return flag;
}
};