zl程序教程

您现在的位置是:首页 >  其他

当前栏目

判断一个整数数组是不是二叉搜索树的后序遍历序列

搜索遍历序列数组 一个 判断 整数 二叉
2023-09-27 14:22:41 时间

题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。

           如果是返回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);
}