1 #include<stdio.h>
2 #include<malloc.h>
3 #include<iostream>
4
5 //定义节点
6 typedef struct BiNode{
7 char data;
8 struct BiNode *lch;
9 struct BiNode *rch;
10 }BiNode,*BiTree;
11
12 //先序拓展序列建立二叉树
13 void Create(BiTree &T)
14 {
15 T =(BiNode*) malloc (sizeof(BiNode));
16
17 printf("Enter the data \n");
18 scanf(" %c",&T->data);
19 if(T->data=='#') T = NULL;
20 if(T){
21 printf("");
22 Create(T->lch);
23 Create(T->rch);
24 }
25 }
26
27 //先序遍历 (递归)
28 void Preorder (BiTree T)
29 {
30 if (T) {
31 printf(" %c",T->data); // 访问根结点
32
33 Preorder(T->lch); // 遍历左子树
34 Preorder(T->rch);// 遍历右子树
35 }
36 }
37
38 //中序遍历 (递归)
39 void Inorder (BiTree T)
40 {
41 if(T) {
42 Inorder(T->lch);
43
44 printf(" %c",T->data);
45
46 Inorder(T->rch);
47 }
48 }
49
50 //后序遍历 (递归)
51 void Postorder (BiTree T)
52 {
53 if(T) {
54 Postorder(T->lch);
55 Postorder(T->rch);
56
57 printf(" %c",T->data);
58 }
59 }
60
61 int main()
62 {
63 //建树
64 printf("The fuction Create() is called.\n");
65 BiTree T;
66 Create(T);
67
68 //三种遍历递归算法
69 printf("\n");
70 printf("The fuction Preorder() is called.\n");
71 Preorder(T);
72
73 printf("\n");
74 printf("The fuction Inorder() is called.\n");
75 Inorder(T);
76
77 printf("\n");
78 printf("The fuction Postorder() is called.\n");
79 Postorder(T);
80
81
82 printf("\n");
83 system("pause");
84
85 }