判断序列是否为二叉树后序遍历
题目:输入一个整数数组,判断该数组是否是二叉搜索树的后序遍历,若是返回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; }