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