二叉树--遍历(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 }