编写程序实现二叉树的创建,三种遍历自己销毁
#include<myhead.h>
typedef struct t{
char data;
struct t *lchild;
struct t *rchild;
}*Btree;
//创建节点,初始化
Btree tree_init()
{
Btree tree=(Btree)malloc(sizeof(struct t));
if(tree==NULL)
return NULL;
tree->data=0;
tree->lchild=NULL;
tree->rchild=NULL;
return tree;
}
//创建二叉树
Btree tree_create(){
char element;
Btree tree=tree_init();
printf("请输入字符:");
scanf("%c",&element);
getchar();
if(element=='#')
{
return NULL;
}
tree->data=element;
tree->lchild=tree_create();
tree->rchild=tree_create();
return tree;
}
//前序遍历
void first_output(Btree tree)
{
if(NULL == tree)
return ;
printf("%c",tree->data);
first_output(tree->lchild);
first_output(tree->rchild);
}
//中序遍历
void mid_output(Btree tree)
{
if(NULL ==tree)
return;
mid_output(tree->lchild);
printf("%c",tree->data);
mid_output(tree->rchild);
}
//后序遍历
void last_output(Btree tree)
{
if(NULL ==tree)
return;
last_output(tree->lchild);
last_output(tree->rchild);
printf("%c",tree->data);
}
//二叉树释放
Btree free_space(Btree tree)
{
if(NULL ==tree)
return NULL;
free_space(tree->lchild);
free_space(tree->rchild);
free(tree);
tree=NULL;
}
int main(int argc, const char *argv[])
{
Btree tree=NULL;
tree=tree_create();
printf("前序遍历:");
first_output(tree);//前序遍历
puts("");
printf("中序遍历:");
mid_output(tree);//中序遍历
puts("");
printf("后序遍历:");
last_output(tree);//后序遍历
puts("");
free_space(tree);
return 0;
}
效果图: