题目:输入一个整数数组,判断该数组是否是二叉搜索树的后序遍历,若是返回TRUE;否则返回false,假设输入的数组数字各不相同。如输入数组{5,7,6,9,11,10,8} ,返回ture;
bool isafterorder(int *p,int len)
{
if (!p||len<=0)
{
return false;
}
if (len==1)//
{
return true;
}
int i=0;
int root=p[len-1];
for (;i<len-1;++i)
{
if (p[i]>root)
{
break;
}
}
int j=i;
for (;j<len-1;++j)
{
if (p[j]<root)
{
return false;
}
}
bool left=true,right=true;
left=isafterorder(p,i);
right=isafterorder(p+i,len-1-i);
return left&&right;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[]={5,7,6,9,11,10,8};
int b[]={7,4,6,5};
bool flag=false;
flag=isafterorder(a,sizeof(a)/sizeof(int));
return 0;
}