/* 1 2 3 6 7 5 4 判断是不是一个合法的二叉排序树后序序列 */ #include<iostream> using namespace std; bool isSeq(int a[],int start , int end) { int position; if(start==end) return true; if(start>end) return false; int root=a[end-1]; int i=start; while(a[i]<root && i<end) { i++; } position=i; while(i++ && i<end) { if(a[i] < root ) return false; } bool left=isSeq(a,start,position); bool right=isSeq(a,position,end-1); return (left && right); } int main() { int a[]={1,2,3,6,7,5,4}; cout<<isSeq(a,0,7)<<endl; system("pause"); return 0; }