#include"tree.h"
//创建结点的函数
tree_p create_node(char data)
{
tree_p new = (tree_p)malloc(sizeof(tree));
if (new == NULL)
{
printf("申请空间失败\n");
return NULL;
}
new->data = data;
return new;
}
//创建二叉树(创建结点,再创建结点的左右子树)
//二叉树的左右子树,仍然是一个二叉树
tree_p create_tree()
{
char data = '\0'; //定义一个char类型的变量初始化为'\0'
scanf_s("%c",&data,(unsigned int)sizeof(data));
getchar();
if (data == '#')
{
return NULL; //如果终端输入#,表示没有子树
}
tree_p T = create_node(data); //创建根节点
T->lchild = create_tree(); //左子树仍然是一个子树
T->rchild = create_tree();
return T;
}
//先序遍历;根左右
void pri(tree_p T)
{
if (T == NULL)
{
printf(" 入参为空 ");
return;
}
printf("%c->", T->data);
pri(T->lchild); //给根节点的左孩子调用先序遍历
pri(T->rchild); //给根节点的右孩子调用先序遍历
}
//中序遍历;左根右
void mid(tree_p T)
{
if (T == NULL)
{
printf(" 入参为空 ");
return;
}
mid(T->lchild);
printf("%c",T->data);
mid(T->rchild);
}
//后序遍历; 右根左
void beh(tree_p T)
{
if (T == NULL)
{
printf(" 入参为空 ");
return;
}
beh(T->lchild); //给根节点的左孩子调用先序遍历
beh(T->rchild); //给根节点的右孩子调用先序遍历
printf("%c->", T->data);
}