题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
class Solution {
public:
bool validate(vector<int>&arr,int left,int right){
if(left>=right)
return true;
int pos=-1;
bool flag=false;
for(int i=left;i<right;i++){
if(!flag&&arr[i]>arr[right]){
pos = i;
flag = true;
}
if(flag&&arr[i]<arr[right])
return false;
}
return validate(arr,left,pos-1)&&validate(arr,pos,right-1);
}
bool VerifySquenceOfBST(vector<int> sequence) {
if(sequence.size()==0)
return false;
return validate(sequence,0,sequence.size()-1);
}
};