题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。
如果是返回true,否则返回false
bool isPostSequence(int *num,int n)
{
if(num==NULL || n<=0)
{
//throw new exception("the input is error");
}
int *pstart=num,*pend=num+n;
return isPostSequenceByIndex(pstart,pend);
}
bool isPostSequenceByIndex(int *pstart,int *pend)
{
if(pstart==pend)
{
return true;
}
int *cur=pstart;
while(cur<pend)
{
if(*cur<*pend)
{
cur++;
}else
{
break;
}
}
int *mid=cur;
while(cur<pend)
{
if(*mid<*pend)
{
return false;
}else
{
cur++;
}
}
return isPostSequenceByIndex(pstart,mid) && isPostSequenceByIndex(mid+1, pend);
}