二叉树的实现以及三种遍历方法--代码

 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解决终端输出中文乱码问题。

 

树的代码详析在下一篇中进行。

 

                          

 

 

posted @ 2019-12-04 18:53  ambrose  阅读(2777)  评论(0编辑  收藏  举报