/*
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。
如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
/
/
解题思路:
首先,我们要明确二叉搜索树的一个特点就是"左孩子<根<右孩子”,
那么也就是:“左子树<根<右子树”,后序遍历数组的序列分布就是左右根,
也就是说整个数组从左至右永远是符合抛物线原则先递增后递减,
所以我们可以从数组最右边开始向左依次进行遍历,一旦不满则数组元素大小
先递增后递减原则,则代表false,遍历数组后都满足该原则代表true。
*/
class Solution {
public:
bool VerifySquenceOfBST(vector<int> sequence) {
int mark=sequence.size();
if(mark<=0)
{
return false;
}
int i=0;
while(--mark)
{
while(sequence[i++]<sequence[mark]);
while(sequence[i++]>sequence[mark]);
if(i<mark)
{
return false;
}
i=0;
}
return true;
}
};</int>