数据结构 树的三种遍历
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学号:E30814013
姓名:张芸;
专业:网络工程
题目::实现二叉树的前序,中序,后序遍历
#include
#include
#include
typedef struct Btnode{
char data;
struct Btnode *lchild;
struct Btnode *rchild;
}Btnode;
void main()
{
void xianxu(Btnode *BT);
void zhongxu(Btnode *BT);
void houxu(Btnode *BT);
Btnode *CreatBiTree(Btnode *BT);
Btnode *BT;
Btnode *B;
BT=(Btnode*)malloc(sizeof(Btnode));
printf("先序输入二叉树中节点的值(一个字符,先序输入),空格表示空树\n"); B=BT=CreatBiTree(BT);
printf("输出二叉树(二叉树的遍历)\n");
printf("先序\n");
xianxu(BT);
printf("\n");
printf("中序\n");
zhongxu(BT);
printf("\n");
printf("后序\n");
houxu(BT);
printf("\n");
}
Btnode *CreatBiTree(Btnode *BT)
{char ch;
scanf("%c",&ch);
if(ch==' ')BT=NULL;
else{
BT=(Btnode*)malloc(sizeof(Btnode));
BT->data=ch;
BT->lchild=CreatBiTree(BT->lchild);
BT->rchild=CreatBiTree(BT->rchild);
}
return BT;
}
void xianxu(Btnode *BT)
{
if(BT){
printf("%c",BT->data);
xianxu(BT->lchild);
xianxu(BT->rchild);
}
}
void zhongxu(Btnode *BT)
{
if(BT){
zhongxu(BT->lchild);
printf("%c",BT->data);
zhongxu(BT->rchild);
}
}
void houxu(Btnode *BT)
{
if(BT){
houxu(BT->lchild);
houxu(BT->rchild);
printf("%c",BT->data);
}
}