二叉树的实现以及三种遍历方法--代码
1 #include<stdio.h> 2 #include <stdlib.h> 3 4 /*树的数据类型*/ 5 typedef char TElemType; 6 /*定义二叉树的结构*/ 7 typedef struct BiTNode 8 { 9 TElemType data; //数据 10 struct BiTNode *left,*right; //左右孩子节点 11 }BiTNode,*BiTree; 12 13 void createBiTree(BiTree* T) 14 { 15 char ch; 16 scanf("%c",&ch); 17 if(ch ==' ') 18 { 19 *T = NULL; 20 } 21 else 22 { 23 *T = (BiTNode*)malloc(sizeof(BiTNode)); 24 if(!*T) exit(-1); 25 (*T)->data = ch; 26 createBiTree(&(*T)->left); 27 createBiTree(&(*T)->right); 28 } 29 30 } 31 32 void preOrder(BiTree T) 33 { 34 if(T==NULL) return; 35 printf("%c",T->data); 36 preOrder(T->left); 37 preOrder(T->right); 38 } 39 40 void InOrder(BiTree T) 41 { 42 if(T==NULL)return ; 43 InOrder(T->left); 44 printf("%c",T->data); 45 InOrder(T->right); 46 } 47 48 void PostOrder(BiTree T) 49 { 50 if(T==NULL)return; 51 PostOrder(T->left); 52 PostOrder(T->right); 53 printf("%c",T->data); 54 } 55 56 int main(int argc, char const *argv[]) 57 { 58 BiTree T; 59 createBiTree(&T); 60 printf("先序遍历:\n"); 61 preOrder(T); 62 printf("\n中序遍历:\n"); 63 InOrder(T); 64 printf("\n后序遍历:\n"); 65 PostOrder(T); 66 //ABC DE G F 67 return 0; 68 }
结果:
注:chcp 65001解决终端输出中文乱码问题。
树的代码详析在下一篇中进行。