#include "tree.h"
2 //创建结点的函数
3 tree_p create_node(char data)
4 {
5 tree_p new = (tree_p)malloc(sizeof(tree));
6 if(new==NULL)
7 {
8 printf("申请空间失败\n");
9 return NULL;
10 }
11 new->data = data;
12 return new;
13 }
14 //创建二叉树(创建结点,再创建结点的左右子树)
15 //二叉树的左右子树,仍然是一个二叉树
16 tree_p create_tree()
17 {
18 char data = '\0'; //定义一个char类型的变量初始化为'\0'
19 scanf("%c",&data);
20 getchar();
21 if(data=='#')
22 {
23 return NULL; //如果终端输入#,表示没有子树
24 }
25 tree_p T = create_node(data); //创建根节点
26 T->lchild = create_tree(); //左子树仍然是一个子树
27 T->rchild = create_tree();
28 return T;
29 }
30 //先序遍历:根左右
31 void pri(tree_p T)
32 {
33 if(T==NULL)
34 {
35 return;
36 }
37 printf("%c->",T->data);
38 pri(T->lchild); //给根节点的左孩子调用先序遍历
39 pri(T->rchild); //给根节点的右孩子调用先序遍历
40 }
41 //后序遍历:左右根
42 void next(tree_p T)
43 {
44 if(T==NULL)
45 {
46 return;
47 }
48 next(T->lchild);
49 next(T->rchild);
50 printf("%c->",T->data);
51 }
52 //中序遍历:左根右
53 void zhong(tree_p T)
54 {
55 if(T==NULL)
56 {
57 return;
58 }
59 next(T->lchild);
60 printf("%c->",T->data);
61 next(T->rchild);
62 }
2024/2/27
最新推荐文章于 2024-09-11 18:48:10 发布