二叉树--遍历(c语言简单实现)

 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 }

 

posted @ 2015-05-08 09:46  Object_mo  阅读(2035)  评论(0编辑  收藏  举报
mozhuhao