淮海工学院计算机工程学院
实验报告书
课程名: 《 数 据 结 构》
题 目: 树形数据结构及其应用
班 级:
学 号:
姓 名:
实验2 树形数据结构
实验目的和要求
1.熟练掌握二叉树的二叉链表存储结构;二叉树的常用遍历方法:按层遍历、先序递归遍历、中序递归和非递归遍历、后序递归遍历。
2.掌握按先序遍历顺序输入数据,递归建立二叉树的方法。
3. 掌握建立哈夫曼树的方法,实现哈夫曼编码。
实验环境
Turbo C 或VC++
实验学时
4学时,必做实验
实验题目
[问题描述] 建立一棵用二叉链表方式存储的二叉树,并对其进行遍历(先序、中序和后序),打印输出遍历结果。
[基本要求] 从键盘接受输入先序序列,以二叉链表作为存储结构,建立二叉树(以先序来建立)并对其进行遍历(先序、中序、后序),然后将遍历结果打印输出。要求采用递归和非递归两种方法实现。
[测试数据] ABCффDEфGффFффф(其中ф表示空格字符)
输出结果为: 先序:ABCDEGF
中序:CBEGDFA
后序:CGBFDBA
2.已知二叉树按照二叉链表方式存储,编写算法,要求实现二叉树的竖向显示(竖向显示就是二叉树的按层显示)。
[提示]:
(1)参习题6.20,实现逐层遍历
(2)队中保存每个结点的打印位置,其左、右子的距离
3.如题1要求建立好二叉树,按凹入表形式打印二叉树结构,如图6.34所示。
A
B C
D E
图6.34
F
主要数据结构
1.
typedef char DataType;
typedef struct Node
{
DataType data;
struct Node *LChild;
struct Node *RChild;
}BiTNode, *BiTree;
2.
ypedef BiTree QueueElementType;
typedef struct
{
QueueElementType element[MAXSIZE]; /* 队列的元素空间*/
int front; /*头指针指示器*/
int rear; /*尾指针指示器*/
}SeqQueue;
3.void InitQueue(SeqQueue *Q)/*初始化操作*/
4.int EnterQueue(SeqQueue *Q, QueueElementType x)/*入队操作*/
5.int DeleteQueue(SeqQueue *Q, QueueElementType *x)/*出队操作*/
6.int LayerOrder(BiTree bt)
7.InitQueue(Q); /*初始化空队列Q*/
8.void CreateBiTree(BiTree *bt)
9.void PreOrder(BiTree root)//先序遍历二叉树
10.void InOrder(BiTree root)//中序遍历二叉树
11.void PostOrder(BiTree root)//后序遍历二叉树
12.int CreateBiTree(BiTree T) //创建一棵非空二叉树
13.void PrintTree(BiTree Boot,int nLayer) /* 打印二叉树 */
主要算法
用递归和非递归进行遍历(先序、中序、后序)
按图进行遍历
用队列编写二叉链表存储:初始化、入队、出队
运行结果
递归
非递归
2.
3.
实验体会
代码可能有点冗长,对后序线索二叉树求后继节点实现的不是很好。
这次任务量有点大,实现的函数太多,全部放在一个文件里不利于维护与修改。
附源代码
递归:
#include stdio.h
#include malloc.h
#include conio.h
typedef char DataType;
typedef struct Node
{
DataType data;
struct Node *LChild;
struct
您可能关注的文档
最近下载
- 2025年房地产经纪人房地产经纪机构目标客户群体定位与细分专题试卷及解析.pdf VIP
- 口腔材料学总论.ppt VIP
- 2026年建设工程造价(工期延误造价)自测试题及答案.doc VIP
- 多发伤的早期评估与多学科协作救治策略.pptx VIP
- RAZ-I英语绘本Healthy Me(带练习册).pdf VIP
- 2025年度组织生活会个人对照检查材料(五个对照+铸牢中华民族共同体意识).docx VIP
- 关于加强规划建设管理的通知.doc VIP
- 故宫文创衍生品课件.pptx VIP
- 2025年注册安全工程师考试(中级)安全生产法律法规试题与参考答案.docx VIP
- (2026春新版本)苏教版数学三年级下册全册教案.doc
原创力文档

文档评论(0)