题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出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); } };