实验五--二叉树的建立及遍历
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五--二叉树的建立及遍历
实验五二叉树的建立及遍历
一、实验目的
1.熟悉二叉树的存贮结构及遍历方式,掌握有关算法的实现。
2.能够利用二叉树解决具体问题。
二、实验内容
1. 要求采用二叉链表作为存贮结构,树中每个结点的
数据类型设定为字符型。完成二叉树的建立、先序、中序、和后序递归遍历的操作。
2.利用栈实现非递归中序遍历二叉树。
3. 利用队列实现按层遍历二叉树。
实现提示:本算法要采用一个队列q ,先输出二叉树根结点,然后判断:若其左孩子指针非空,则将其入队列;若其右孩子指针非空,则也将其入队列。然后取队列首指针,对其所指结点继续做如上操作,直到队列空为止。因为队列的特点是先进先出,从而达到按层次顺序遍历二叉树目的。
#include
#include
#include
typedef struct BiTNode
{ char data;
struct BiTNode *lchild,*rchild; }BiTNode,* BiTree;
void creat(BiTree &T)
{
//填充创建树的代码
}
void preorder(BiTree T)
{
//填充先序遍历代码
}
void inorder(BiTree T)
{
\\填充中序遍历代码
}
void postorder(BiTree T)
{
\\填充后序遍历代码
}
main()
{
BiTree T;
creat(T);
preorder(T); printf("\n");
postorder(T);printf("\n");
inorder(T); printf("\n");
}
实验六查找
一、实验目的
1.掌握顺序查找和折半查找两种查找的算法及实现技术;了解它们各自的优缺点。
2.构造并能输出二叉排序树。
3.熟悉上述查找方法的适用范围和条件,基本思想及效率分析。
二、实验内容
⒈顺序查找
建立一个学生信息表,表中的每个数据元素是一个记录,其中的以学号作为关键字,编程进行顺序查找。如果找到,就输出该元素的位置;如果没找到,输出0。
#include
typedef struct
{ int nu;
char na[20];
int score;
}elemtype;
typedef struct
{elemtype elem[20];
int length;}SSTable;
int Search_Seq(SSTable ST,int key) {
//顺序查找
}
void main()
{ SSTable ST;
int x=1,i,key;
printf("\nEnter length:");
scanf("%d",&ST.length);
for(i=1;i<=ST.length;i++)
{printf("\nNo.%d number:",i);
scanf("%d",&ST.elem[i].nu);
printf("\n name:");
scanf("%s",&ST.elem[i].na);
printf("\n score:");
scanf("%d",&ST.elem[i].score);}
while(x==1)
{ printf("\nEnter the number to search:");
scanf("%d",&key);
i=Search_Seq(ST,key);
if(i>0)
{ printf("\nThe element is no.%d:",i);
printf("\nnu:%d,name:%s,score:%d\n",ST.elem[i].
nu,ST.elem[i].na,ST.elem[i].score);
}
else printf("\nThere is no %d",key);
printf("\n1-Continue 2-Out\n");
scanf("%d",&x);
}
}
⒉折半查找
建立一个学生信息表,表中的每个数据元素是一个记录,要求表按关键字“学号”有序,编程实现折
半查找。如果找到,就输出该元素的位置;如果没找到,输出0。
#include
typedef struct
{ int nu;
char na[20];
int score;
} elemtype;
typedef struct
{elemtype elem[20];
int length;}SSTable;
int Search_Bin(SSTable ST,int key)
{
//填加折半查找的代码
}
void main()
{
SSTable ST;
int x=1,i,key;
printf("\nEnter length:");