- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构与算法实验二叉树基本操作
二叉树基本操作实验报告
实验名称
二叉树基本操作
实验目的
熟悉二叉树结点的结构和二叉树的基本操作;
掌握二叉树每种操作的具体实现;
学会利用递归方法编写对二叉树这种递归数据结构进行处理的算法;
在二叉树基本操作的基础上掌握对二叉树的一些其它操作的具体实现方法;
掌握构造哈夫曼树以及哈夫曼编码的方法。
实验内容
编制一个演示二叉树创建、遍历、计算等操作的程序。
问题描述
用数据结构相关知识,实现二叉树的定义和操作。该程序包括二叉树结构类型以及对二叉树操作的具体的函数定义(包括:初始化二叉树、清空二叉树、检查二叉树是否为空、遍历二叉树(先序、后序、中序、层次)、求二叉树的深度、求二叉树所有节点数)。
问题分析
该实验是基于C语言和数据结构知识基础的对二叉树的基本操作的检验,无需设计复杂的算法,程序语句也相对简单。因此,我直接按要求定义了对二叉树操作的具体函数,并于主函数中实现对应的功能调用,其中,功能选择靠switch语句实现。
实验步骤
1.需求分析?
? ?本演示程序用VC++编写,完成二叉树的生成、遍历、计算等基本操作。?
输入的形式和输入值的范围:以字符(其中‘#’表示虚节点)的形式输入,以创建二叉树;在输入二叉树节点前,必须先确定该序列能正确创建二叉树。?
?②?输出的形式:在所有三种操作中都显示操作是否正确以及操作后二叉树的内容。?
③?程序所能达到的功能:完成二叉树的生成、遍历(包括先序、后序、中序、层次四种方式)、计算等基本操作。?
?④?测试数据:创建操作中依次输入a,b,d,#,g,#,#,#,c,e,#,#,f,#,#生成一个二叉树。?
2.概要设计?
??1)为了实现上述程序功能,需要定义二叉树的抽象数据类型:???
ADT?BitTree?{?
?数据对象:由一个根节点和两个互不相交的左右子树构成??
数据关系:结点具有相同的数据类型及层次结构?
基本操作:?
Void BinTreeInit(BitTree *T)?
???初始条件:无?
???操作结果:初始化一棵二叉树??
Void BinTreeCreat(BitTree *T)??
???初始条件:二叉树T已存在?
???操作结果:按先序次序创建一棵二叉树
2)本程序包含7个函数:???
①主函数main()?②初始化二叉树函数 BinTreeInit()??③建立一棵二叉树函数BinTreeCreat()??④先序遍历函数PreOrderTraverse()?⑤中序遍历函数 InOrderTraverse()⑥后序遍历函数 PostOrderTraverse()⑦层次遍历函数 LevelOrderTraverse()⑧求二叉树深度函数 Countlevel()⑨检验空树函数BinTreeEmpty()⑩求节点数函数 Countnode()
函数说明
#includestdio.h
#includestdlib.h
typedef char Datatype;
typedef struct NodeType
{
Datatype data;
struct NodeType *lchild;
struct NodeType *rchild;
}BiTNode;
typedef BiTNode * BinTree;
//初始化二叉树。即把树指针置空
void BinTreeInit(BiTNode *T)
{
// BiTNode *T;
T=(BiTNode *)malloc(sizeof(BiTNode));
T=NULL;
}
//二叉树的建立
BinTree CreateBiTNode()
{
BiTNode *T;
Datatype ch;
ch=getchar();
if(ch==#) T=NULL;
else{
if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) printf(Error!);
T-data=ch;
T-lchild=CreateBiTNode();
T-rchild=CreateBiTNode();
}
return T;
}
//先序遍历
void PreOrderTraverse(BiTNode *p){
if(p!=NULL){
printf(%c ,p-data);
PreOrderTraverse(p-lchild);
PreOrderTraverse(p-rchild);
}
}
//中序遍历
void InOrderTravers
您可能关注的文档
- 提升机司机实操问答.doc
- 提升机牌板(各1块).doc
- 提高建筑节能的措施.doc
- 提高能源效率的一些简单方法.doc
- 提高航煤收率保证质量合格.doc
- 摩擦式提升机提升系统安全检测检验.doc
- 操作系统FIFO算法简化版.docx
- 政治经济学教程(第九版)-(宋涛)重难点.doc
- 教堂空间的演变.docx
- 教学设计认识多边形.doc
- 2024年03月浙江金华义乌市部分事业单位招考聘用148人笔试历年典型考题与考点剖析含答案详解.docx
- 2024年03月浙江省温岭市科学技术局2024年招考1名编外工作人员笔试历年典型考题与考点剖析含答案.docx
- 2024年03月浙江台州三门县人民检察院招考聘用编制外劳动合同工笔试历年典型考题与考点剖析含答案详解.docx
- 2024年03月海南省昌江黎族自治县医疗集团2024年第一批公开考核公开招聘编外工作人员笔试历年典型.docx
- 2024年03月辽宁省本溪市溪湖区事业单位2024年公开招考4名工作人员笔试历年典型考题与考点剖析含.docx
- 2024年03月河南开封市兰考县引进高层次急需紧缺人才32人笔试历年典型考题与考点剖析含答案详解.docx
- 2024年03月江苏省扬州经济技术开发区事业单位2024年公开招聘卫生专业技术人员笔试历年典型考题与.docx
- 2024年03月湖南省长沙燃气燃具监督检测中心招考聘用普通雇员笔试历年典型考题与考点剖析含答案详解.docx
- 标准化治理何以推进高质量数...省事”政府服务平台案例研究_曹太鑫.pdf
- 数字政府助推数字经济高质量发展:机理与路径_丁晓钦.pdf
最近下载
- 货物质量保证措施方案.docx VIP
- 九年级全一册英语单词默写表(人教版).docx VIP
- 香港朗文小学英语Longman-book4B-Chapter1-课件-Join-ourclub.ppt VIP
- GBT25198__压力容器封头.pdf VIP
- SYT7301-2016陆上石油天然气开采含油污泥资源化综合利用及污染控制技术要求.doc
- 机房断电应急预案.docx
- 电力电缆课程设计220KV 交联聚乙烯绝缘电力电缆结构设计.doc
- 《国有企业管理人员处分条例》解读.pptx VIP
- 科普版四年级上 英语 课文 带翻译.pdf VIP
- 急救相关知识考试题库300题(含答案).pdf VIP
文档评论(0)