题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
一开始没有写成两个函数的形式,定义了新的seq1,seq2,造成内存太大,所以以后可以用序列序号做参数,就不用浪费内存了。
class Solution {
public:
bool VerifySquenceOfBST(vector<int> seq) {
if(seq.size()==0)
return false;
return isorder(seq,0,seq.size()-1);
}
bool isorder(vector<int> seq,int start,int end){
if(end<=start)
return true;
int i=start;
for(;i<end;i++){
if (seq[i]>seq[end])
break;
}
int j=i;
for(;j<end;j++){
if(seq[j]<seq[end])
return false;
}
return isorder(seq,start,i-1)&& isorder(seq,j,end-1);
}
};