#include "function.h" void PreOder(BiTree p){ if(p){ printf("%c",p->c); PreOder(p->lchild); PreOder(p->rchild); } } void InOrder(BiTree p){ if(p){ InOrder(p->lchild); printf("%c",p->c); InOrder(p->rchild); } } void PostOrder(BiTree p){ if(p){ PostOrder(p->lchild); PostOrder(p->rchild); printf("%c",p->c); } } int main() { BiTree pnew; BiTree tree=NULL;//空树 char c; ptag_t phead=NULL,ptail=NULL,listpnew=NULL,pcur; while (scanf("%c",&c)){ if(c=='\n'){ break; } pnew= (BiTree)calloc(1,sizeof(BiTNode)); pnew->c=c; listpnew=(ptag_t)calloc(1,sizeof(tag_t)); //左右孩子不用指向Nullcalloc已做过 listpnew->p=pnew; if(tree==NULL){ tree=pnew; phead=listpnew; ptail=listpnew; pcur=listpnew; } else { ptail->pnext=listpnew; ptail=listpnew; if(NULL==pcur->p->lchild){ pcur->p->lchild=pnew; }else if(pcur->p->rchild==NULL){ pcur->p->rchild=pnew; pcur=pcur->pnext; } } } PreOder(tree); printf("\n"); InOrder(tree); printf("\n"); PostOrder(tree); return 0; }
typedef char BiElemType; typedef struct BiTNode{ BiElemType c; struct BiTNode *lchild; struct BiTNode *rchild; }BiTNode,*BiTree; typedef struct tag{ BiTree p; struct tag *pnext; }tag_t,*ptag_t;