/* Note:Your choice is C IDE */
#include "stdio.h"
#include "stdlib.h"
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef char TElemType;
typedef int Status;
/*************struct***************/
typedef struct BTNode{
TElemType data;
struct BTNode *lchild;
struct BTNode *rchild;
}BTNode,*BiTree;
/************create***************/
Status CreateBiTree_L(BiTree *T){
char a;
a=getchar();
if (a=='#') *T=NULL;
else {
(*T)=(BiTree)malloc(sizeof(BTNode));
if(!(*T))exit(OVERFLOW);
(*T)->data=a;
getchar();
CreateBiTree_L(&(*T)->lchild);
getchar();
CreateBiTree_L(&(*T)->rchild);
}
return OK;
}
/********************PreOrder****************/
Status PreOrderTraverse(BiTree T){
if(T){
if(!printf("%5c",T->data))return ERROR;
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
return OK;
}
/********************InOrder****************/
Status InOrderTraverse(BiTree T){
if(T){
InOrderTraverse(T->lchild);
if(!printf("%5c",T->data))return ERROR;
InOrderTraverse(T->rchild);
}
return OK;
}
/********************PostOrder****************/
Status PostOrderTraverse(BiTree T){
if(T){
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
if(!printf("%5c",T->data))return ERROR;
}
return OK;
}
void main()
{
BiTree T1;
printf("Please enter value for node,if lchild or rchild is empty ,please enter #\n");
CreateBiTree_L(&T1);
printf("printf datas in PreOrder\n");
PreOrderTraverse(T1);
printf("\nprintf datas in IneOrder\n");
InOrderTraverse(T1);
printf("\nprintf datas in PostOrder\n");
PostOrderTraverse(T1);
system("pause");
}