输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
class Solution { public: bool VerifySquenceOfBST(vector<int> sequence) { if(sequence.empty()) return false; return VerifySquenceOfBSTCore(sequence,0,sequence.size()-1); } private: bool VerifySquenceOfBSTCore(vector<int> seq,int start,int end) { if(start>=end) return true; int i=end-1; while(i>=start&&seq[i]>seq[end]) --i; int j=start; while(j<=i) { if(seq[j]>seq[end]) return false; ++j; } return VerifySquenceOfBSTCore(seq,start,i)&&VerifySquenceOfBSTCore(seq,i+1,end-1); } };