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