实验四 二叉树(一)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四 二叉树(一)
一.实验目的
(1)进一步掌握指针变量的用途和程序设计方法。

(2)掌握二叉树的结构特征,以及链式存储结构的特点及程序设计方法。

(3)掌握构造二叉树的基本方法。

(4)掌握二叉树遍历算法的设计方法。

二.实验要求
(1)认真阅读和掌握和本实验相关的教材内容。

(2)掌握一个实际二叉树的创建方法。

(3)掌握二叉链存储结构下二叉树操作的设计方法和遍历操作设计方法。

三.实验内容
(1)定义二叉链存储结构。

(2)按照二叉树的性质5来建立一棵实际二叉树的操作,编写求二叉数的树深的函数。

(3)编写中序遍历二叉树的函数。

(4)编写求二叉数的结点总数的函数。

(5)编写测试主函数并上机运行。

打印出运行结果,并结合程序运行结果进行分析。

四. 实验要求
(1)利用二叉树的性质5来建立二叉树,输入数据时需要将结点的序号(按满二叉树编号)和数据同时给出:序号 数据元素。

结合下图的二叉树数的输入据顺序应该是:1 1,2 2,3 3,4 4,6 5,7 6,13 7,14 8,15 9。

本算法采用程序如下,请填空使程序完整。

typedef struct stu{
char data; ( );
} BiTNode ; /* 利用二叉树性质5 ,借助一维数组V 建立二叉树 */
BiTNode *creat_bt1() { BiTNode *t,*p,*v[20]; int i; Etype e;
/* 输入结点的序号i 、结点的数据e */
printf("\n i,data=?");
scanf("%d%d",&i,&e);
( ) /* 当 i ,e 都为0时,结束循环 */
{ p=(BiTNode *)malloc(sizeof(BiTNode));
p->data=e;
p->lch=NULL;
( );
v[i]=p;
if (i==1) t=p; /* 序号为1的结点是根 */
else{ j=i/2;
if(i%2==0) v[j]->lch=p; /* 序号为偶数,做左孩子*/
else v[j]->rch=p; /* 序号为奇数,做右孩子*/
}
printf("\n i,data=?"); scanf("%d,%d",&i,&e);
}
( );
} /* creat_bt1 */
Void main( )
{
BiTNode *t,*q;
9
t=();
//中序遍历二叉树
//求二叉数的树深
printf("\n");
}
(2)编写中序遍历二叉树的函数;(3)编写求二叉数的树深的函数;(4)编写求二叉数的结点总数的函数。

相关文档
最新文档