二叉树有先序遍历和中序遍历,构造出后序遍历

 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 } 
posted @ 2012-07-06 21:12  Amazing_Y  阅读(288)  评论(0编辑  收藏  举报