- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Lab06.二叉树的操作及应用
【实验目的和要求】
1.掌握二叉树顺序存储表示的实现及其基本操作;
2.掌握线索二叉树类型的定义方法,会按对称序线索化二叉树和周游对称序线索二叉树;
3.掌握优先队列的实现及其基本操作;
4.掌握构造哈夫曼树的基本思想和哈夫曼树的数据结构设计,能编程实现哈夫曼树的构造;
5.掌握哈夫曼树的基本应用——哈夫曼编码。
【实验内容】
1.二叉树按顺序存储表示,编写一个C源程序,计算给定二叉树的叶结点数,并给出它的先根序列,或后根序列,或对称序列。
2.编写一个C源程序,对给定的二叉树,按对称序线索化该二叉树,并按对称序周游该对称序线索二叉树。
3. 编写一个C源程序,恰当定义优先队列,并对给定的优先队列,实现插入和删除最小结点的操作。
4.简述构造哈夫曼树的基本思想和哈夫曼树的数据结构设计,并编程实现哈夫曼树的构造。
5.简述哈夫曼编码的原理和方法,编程实现哈夫曼编码与解码。
【实验仪器与软件】
1.CPU主频在1GHz以上,内存在512Mb以上的PC;
2.VC6.0,Word 2003及以上版本。
实验讲评:
实验成绩:
评阅教师:
2012 年 月 日
Lab06.二叉树的操作及应用
一、顺序存储表示二叉树及其基本运算
其顺序表示为:首先要对它进行扩充,增加一些并不存在的空结点,使之成为一棵完全二叉树,然后再用一维数组顺序存储。
其存储表示为:
struct SeqBinTree{/* 顺序二叉树类型定义*/
int MAXNUM /* 完全二叉树中允许结点的最大个数*/
int n; /* 改造成完全二叉树后,结点的实际个数*/
DataType *nodelist; /* 存放结点的数组*/
};
typedef struct SeqBinTree *PSeqBinTree;
二、对称序线索化该二叉树及其周游的实现
要按对称序周游对称序线索二叉树,首先找到对称序列中的第一个结点,然后依次找到结点的后继结点,直至其后继结点为空即可。
第一个结点也很容易找,只要从根结点出发沿着左指针不断往下走,直至左指针为空,到达“最左下”的结点,这就是对称序第一个结点。
找任意结点的对称序后继时,也非常容易做:一个结点的右指针字段如果是线索,则它就指向该结点在对称序下的后继;如果不是线索,则它指向该结点右子树的根,而该结点在对称序下的后继应是此右子树的最左下结点。
其编写程序如下:
#includestdio.h
#includestdlib.h
#define MAX_SIZE 100
#define Link 0
#define Thread 1
typedef struct BiThrTreeNode
{
char info;
struct BiThrTreeNode *l_link;
struct BiThrTreeNode *r_link;
int LTag,RTag;
}BiThrTreeNode,*BiThrTree;
typedef struct SeqStack
{
BiThrTree s[MAX_SIZE];
int t;
}*PSeqStack;
PSeqStack createEmptyStack_seq(void)
{
PSeqStack p_stack;
p_stack=(PSeqStack)malloc(sizeof(struct SeqStack));
if(NULL==p_stack)
{
printf(\n out of space!\n);
exit(-1);
}
else
{
p_stack-t=-1;//表示以满堆栈的方式存放数据
}
return p_stack;
}
int isEmptyStack_seq(PSeqStack p_stack)
{
return p_stack-t==-1;
}
void push_seq(PSeqStack p_stack,BiThrTree bt)
{
if(p_stack-t=MAX_SIZE-1)
{
printf(\tOverflow!\n);
exit(-1);
}
++p_stack-t;
p_stack-s[p_stack-t]=bt;
}
void pop_seq(PSeqStack p_stack)
{
if(p_stack-t==-1)
{
printf(\tUnderflow!\n);
您可能关注的文档
- “十二”时期中国农村发展若干战略问题分析与思考.doc
- 在数学教学中培养学生创造性思维7.doc
- 川大学期末考试试题(闭卷.doc
- 中央财经大学博士培养方案样表.doc
- 东翼轨道大巷施工规程.doc
- 房地产估价师考试《房地产开发经营与管理》真题.doc
- 当代中国农村留守儿童教育问题及对策研究.doc
- 公共事业管理(卫生,制)教学计划.doc
- 会计专业高素质创新人才培养问题研究.doc
- 国家公务员行测答案及解析.doc
- 2024年云阳县公务员考试行测试卷历年真题及答案详解(有一套).docx
- 2024年垫江县公务员考试行测试卷历年真题及答案详解(名师系列).docx
- 2024年巴音郭楞蒙古自治州公务员考试行测试卷历年真题精选答案详解.docx
- 2024年毕节地区公务员考试行测试卷历年真题含答案详解.docx
- 2024年怀化市公务员考试行测真题及一套完整答案详解.docx
- 2023年龙岩市公务员考试行测试卷历年真题及答案详解(名校卷).docx
- 2024年咸宁市公务员考试行测试卷历年真题及完整答案详解.docx
- 2024年云浮市公务员考试行测试卷历年真题带答案详解.docx
- 2024年七台河市公务员考试行测试卷历年真题及答案详解(典优).docx
- 2024年大理州公务员考试行测真题及答案详解(全优).docx
文档评论(0)