1 #include<stdlib.h>
2 typedef char ele;
3
4 typedef struct BiTNode{
5 ele e;
6 struct BiTNode *lnode,*rnode;
7 }bitNode,*bitree;
8
9 void visit(ele e);
10
11 /*
12 * 先序遍历
13 * (1)访问根节点;
14 * (2)先序遍历左子树
15 * (3)先序遍历右子树
16 *
17 * */
18 void PreOrderTraverse(bitree t){
19 if(t){
20 visit(t->e);
21 PreOrderTraverse(t->lnode);
22 PreOrderTraverse(t->rnode);
23 }
24 }
25
26 /*
27 * 中序遍历
28 * (1)先序遍历左子树
29 * (2)访问根节点;
30 * (3)先序遍历右子树
31 *
32 * */
33 void InOrderOrderTraverse(bitree t){
34 if(t){
35 InOrderOrderTraverse(t->lnode);
36 visit(t->e);
37 InOrderOrderTraverse(t->rnode);
38 }
39 }
40
41 /*
42 * 后序序遍历
43 * (1)先序遍历左子树
44 * (2)先序遍历右子树
45 * (3)访问根节点;
46 *
47 * */
48 void PosOrderOrderTraverse(bitree t){
49 if(t){
50 PosOrderOrderTraverse(t->lnode);
51 PosOrderOrderTraverse(t->rnode);
52 visit(t->e);
53 }
54 }
55
56 /*
57 *
58 * 先序生成一颗二叉树
59 *
60 * */
61 void createBiTree(bitree *t){
62 char c;
63 scanf("%c",&c);
64 if(c==' ')*t=NULL;
65 else{
66 *t=(bitNode *)malloc(sizeof(bitNode));
67 (*t)->e=c;
68 createBiTree(&((*t)->lnode));
69 createBiTree(&((*t)->rnode));
70 }
71 }