由二叉树的前序遍历和中序遍历序列能确定唯一的一棵二叉树,下面程序的作用是实现由已知某二叉
树的前序遍历和中序遍历序列,生成一棵用二叉链表表示的二叉树并打印出后序遍历序列,请写出程序所
树的前序遍历和中序遍历序列,生成一棵用二叉链表表示的二叉树并打印出后序遍历序列,请写出程序所
缺的语句。
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
typedef struct Node{
char info;
struct Node *llink, *rlink;
}TNODE;
char pred[MAX],inod[MAX];
main(int argc,int **argv){
TNODE *root;
if(argc<3) exit 0;
strcpy(pred,argv[1]);
strcpy(inod,argv[2]);
root=restore(pred,inod,strlen(pred));
postorder(root);
}
TNODE *restore(char *ppos,char *ipos,int n){
TNODE *ptr;
char *rpos;
int k;
if(n<=0) return NULL;
ptr->info = *ppos;
for(rpos = ipos; rpos<ipos+n;rpos++) if(*rpos==*ppos) break;
k = rpos - ipos;
ptr->llink = restore(ppos+1, ipos,k );
ptr->rlink = restore(ppos+1+k,rpos+1,n-1-k);
return ptr;
}
postorder(TNODE*ptr){
if(ptr=NULL) return;
postorder(ptr->llink);
postorder(ptr->rlink);
printf(“%c”,ptr->info);
}