二叉树建立,先序、中序、后序遍历(c实现)
建立树ABC##DE#G##F###,输出
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 #define ElemType char 5 //节点声明,数据域、左孩子指针、右孩子指针 6 typedef struct BiTNode{ 7 char data; 8 struct BiTNode *lchild, *rchild; 9 }BiTNode, *BiTree; 10 //先序建立二叉树 11 BiTree CreateBiTree(){ 12 char ch; 13 BiTree T; 14 scanf_s("%c", &ch); 15 if (ch == '#')T = NULL; 16 else{ 17 T = (BiTree)malloc(sizeof(BiTNode)); 18 T->data = ch; 19 T->lchild = CreateBiTree(); 20 T->rchild = CreateBiTree(); 21 } 22 return T;//返回根节点 23 } 24 //先序遍历二叉树 25 void PreOrderTraverse(BiTree T){ 26 if (T){ 27 printf("%c", T->data); 28 PreOrderTraverse(T->lchild); 29 PreOrderTraverse(T->rchild); 30 } 31 } 32 33 //中序遍历 34 void InOrderTraverse(BiTree T){ 35 if (T){ 36 InOrderTraverse(T->lchild); 37 printf("%c", T->data); 38 InOrderTraverse(T->rchild); 39 } 40 } 41 //后序遍历 42 void PostOrderTraverse(BiTree T){ 43 if (T){ 44 PostOrderTraverse(T->lchild); 45 PostOrderTraverse(T->rchild); 46 printf("%c", T->data); 47 } 48 } 49 void main(){ 50 BiTree T; 51 T = CreateBiTree();//建立 52 InOrderTraverse(T);//输出 53 system("pause"); 54 }