#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
typedef int status;
typedef struct BiNode
{
char data;
struct BiNode *lchild,*rchild;
}BiTNode,*BiTree; //定义二叉树
status createBiNode(BiTree &t)
{
char ch;
ch=getchar();
if(ch==' ')
t=NULL;
else
{ //先输入根节点 在左子树 再右子树
if(!(t=(BiTNode *)malloc(sizeof(BiTNode)))) exit(ERROR); //分配空间失败
t->data=ch;
createBiNode(t->lchild);
createBiNode(t->rchild);
}
return OK;
}
//先序访问
status previsit(BiTree t)
{
if(t)
{
putchar(t->data);
previsit(t->lchild);
previsit(t->rchild);
}
return OK;
}
//后序访问
status lastvisit(BiTree t)
{
if(t)
{
lastvisit(t->lchild);
lastvisit(t->rchild);
putchar(t->data);
}//return OK;
return OK;
}
//中序访问
status midvisit(BiTree t)
{
if(t)
{
midvisit(t->lchild);
putchar(t->data);
midvisit(t->rchild);
}
return OK;
}
//二叉树的销毁
void destory(BiTree &t)
{
if(t)
{
destory(t->lchild);
destory(t->rchild);
free(t);
}
t=NULL;
}
int main()
{
BiTree t=NULL;
createBiNode(t);
//previsit(t); //先序访问
//midvisit(t); //中序访问
lastvisit(t);//后续访问
destory(t);
printf("\n");
lastvisit(t);
return 0;
}
二叉树的创建 访问 销毁
最新推荐文章于 2024-02-21 05:14:32 发布