2024/2/27

#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 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值