您的位置:首页 > 其它

二叉树的创建与访问算法的设计(三种遍历方法)

2018-12-22 11:58 211 查看

二叉树的创建与访问算法的设计(三种遍历方法)

1、【问题描述】
从键盘输入二叉树的元素,建立二叉树,实现二叉树的遍历算法。
【基本要求】
实现以下基本操作:
(1)从键盘输入二叉树的元素,建立二叉树。
(2)实现二叉树的先序遍历算法。

2、【问题描述】
从键盘输入二叉树的元素,建立二叉树,实现二叉树的遍历算法。
【基本要求】
实现以下基本操作:
(1)从键盘输入二叉树的元素,建立二叉树。
(2)实现二叉树的中序遍历算法。

3、【问题描述】
从键盘输入二叉树的元素,建立二叉树,实现二叉树的遍历算法。
【基本要求】
实现以下基本操作:
(1)从键盘输入二叉树的元素,建立二叉树。
(2)实现二叉树的后序遍历算法。

程序

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct tree{
char date;
struct tree *lchild;
struct tree *rcjild;
}tree,*shu;
shu xjl(){
char b;
shu p;
scanf("%c",&b);
if(b=='$'){
p=NULL;
}
else{
p=(shu)malloc(sizeof(tree));
p->date=b;
p->lchild=xjl();
p->rcjild=xjl();
}
return p;
}
void xbl( shu p ){
if(p!=NULL){
printf("%c\n",p->date);
xbl(p->lchild);
xbl(p->rcjild);
}
}
shu zjl(){
char b;
shu t;
scanf("%c",&b);
if(b=='$'){
t=NULL;
}
else{
t=(shu)malloc(sizeof(tree));
t->lchild=zjl();
t->date=b;
t->rcjild=zjl();
}
return t;
}
void zbl( shu t ){
if(t!=NULL){
zbl(t->lchild);
printf("%c\n",t->date);
zbl(t->rcjild);
}
}
shu hjl(){
char b;
shu f;
scanf("%c",&b);
if(b=='$'){
f=NULL;
}
else{
f=(shu)malloc(sizeof(tree));
f->lchild=hjl();
f->date=b;
f->rcjild=hjl();
}
return f;
}
void hbl( shu f ){
if(f!=NULL){
hbl(f->lchild);
hbl(f->rcjild);
printf("%c\n",f->date);
}
}
void cd(){
int n;
shu f;
shu t;
shu p;
printf("***************************\n");
printf("  请选择你要执行的功能:\n\n" );
printf("  1、先序遍历建立二叉树\n\n");
printf("  2、中序遍历建立二叉树\n\n");
printf("  3、后序遍历建立二叉树\n\n");
printf("  4、退出\n\n");
printf("  5、返回主菜单\n\n");
printf("***************************\n");
scanf("%d",&n);
getchar();
switch(n){
case 1:
printf("请输入建立先序遍历二叉树数据:\n");
printf("----------------------------\n");
p=xjl();
printf("----------------------------\n");
printf("输出的先序遍历为:\n");
printf("----------------------------\n");
xbl(p);
printf("----------------------------\n");
break;
case 2:
printf("请输入建立中序遍历二叉树数据:\n");
printf("-----------------------------\n");
p=zjl();
printf("-----------------------------\n");
printf("输出的中序遍历为:\n");
printf("-----------------------------\n");
zbl(t);
printf("-----------------------------\n");
break;
case 3:
printf("请输入建立中序遍历二叉树数据:");
printf("-----------------------------\n");
p=hjl();
printf("-----------------------------\n");
printf("输出的后序遍历为:\n");
printf("-----------------------------\n");
hbl(f);
printf("-----------------------------\n");
break;
case 4:
break;
case 5:
cd();
break;

}
}
int main(){
int n;
shu p;
shu t;
shu f;
cd();
return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: