1 #include<stdio.h>
2 #include<stdlib.h>
3
4 #define OVERFLOW 0
5 typedef char Elemtype;
6 typedef struct TreeNode
7 {
8 Elemtype data;
9 struct TreeNode *Lchild;
10 struct TreeNode *Rchild;
11 } TreeNode,*BiTree;
12
13 void CreateBiTree(BiTree *T)
14 {
15 char ch;
16 scanf("%c",&ch);
17 if(ch == '#')
18 *T = NULL;
19 else
20 {
21 *T = (BiTree)malloc( sizeof(TreeNode) );
22 if(!*T)
23 exit(OVERFLOW);
24 (*T)->data = ch;
25 CreateBiTree(&(*T)->Lchild);
26 CreateBiTree(&(*T)->Rchild);
27
28 }
29 }
30 void PreOrderTraverse(BiTree T)
31 {
32 if(T == NULL)
33 return ;
34 printf("%c",T->data);
35 PreOrderTraverse(T->Lchild);
36 PreOrderTraverse(T->Rchild);
37 }
38
39 void InOrderTraverse(BiTree T)
40 {
41 if(T == NULL)
42 return ;
43 InOrderTraverse(T->Lchild);
44 printf("%c",T->data);
45 InOrderTraverse(T->Rchild);
46 }
47 void PostOrderTraverse(BiTree T)
48 {
49 if(T == NULL)
50 return ;
51 PostOrderTraverse(T->Lchild);
52 PostOrderTraverse(T->Rchild);
53 printf("%c",T->data);
54 }
55 int main()
56 {
57 BiTree T;
58 CreateBiTree(&T);
59 PreOrderTraverse(T);
60 printf("\n");
61 InOrderTraverse(T);
62 printf("\n");
63 PostOrderTraverse(T);
64 printf("\n");
65 return 0;
66 }