1 /* 2 a是前序序列 3 b是中序序列 4 后序序列将保存在c中 5 */ 6 void PostOrder(const char a[], const char b[], char c[], int starta, int startb, int startc, int len) 7 { 8 if(len==0) return; 9 if(len==1) { c[startc] = a[starta]; return; } 10 11 c[startc+len-1] = a[starta];//处理树根 12 13 int i = startb; 14 while(b[i]!=a[starta]) ++i; 15 int leftlen = i - startb; 16 int rightlen = len - leftlen - 1; 17 PostOrder(a,b,c,starta+1,startb,startc,leftlen);//构造左子树的PostOrder 18 PostOrder(a,b,c,starta+leftlen+1,startb+leftlen+1,startc+leftlen,rightlen);//构造右子树的PostOrder 19 }
相关文章: