- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课程设计报告
课程名称 数据结构课程设计
专 业: 信息管理与信息系统
班 级:
姓 名:
学 号:
指导教师:
成 绩:
年 12 月 16 日
一、实验一问题分析和任务定义
题目:二叉树的生成和遍历
任务:1、将二叉树以广义表形式存储在一个TXT文件上,通过读取TXT文件,建立二叉树;
2、求树的高度;
3、实现二叉树的前序、中序和后序遍历;
4、将输出结果存储在文件内。
需求分析:在二叉树的应用中,常常要求在树中查找具有某种特征的结点,或者对树中全部结点逐一进行某种处理,这就是二叉树的遍历问题。对二叉树的数据结构进行定义,建立一棵二叉树,然后进行各种实验操作。二叉树是一个非线性结构,遍历时要先明确遍历的规则,先访问根结点还时先访问子树,然后先访问左子树还是先访问有右子树,这些要事先定好,因为采用不同的遍历规则会产生
不同的结果。本次实验要实现先序、中序、后序三种遍历。基于二叉树的递归定义,以及遍历规则,本次实验也采用的是先序遍历的规则进行建树的以及用递归的方式进行二叉树的遍历。
二、逻辑设计:
主程序 系统总框架图
主程序
树的深度广度优先遍历后序遍历中序遍历先序遍历建立二叉树
树的深度
广度优先遍历
后序遍历
中序遍历
先序遍历
建立二叉树
1、构造二叉树,本程序构造二叉树所输入广义表为a(b(d,e),c(,f))
a
b c
d e f
2、遍历功能模块 可以通过要求对所构造的二叉树进行先序遍历、中序遍历、后序遍历,广度优先遍历。
3、求二叉树的深度。
功能设计:
1) Struct BTNode() 使用链式存储结构定义一个结构体数组,保存二叉树的字符信息和定义指向其左孩子和右孩子的指针。
2)CreateBTree() 从键盘上输入构造二叉树的字符以*表示结点的空孩子。
3)PreOrder() 此函数的功能是完成所构造二叉树的先序遍历。
4)InOrder() 此函数的功能是完成所构造二叉树的中序遍历。
5)PostOrder() 此函数的功能是完成所构造二叉树的后序遍历。
6)Levelorder()此函数的功能是完成所构造的二叉树的广度优先遍历
7)BTreeDepth() 对构造好的二叉树求其深度。
三、详细设计:
1、二叉链表由头指针唯一确定,若二叉树为空,则头指针指向空,若结点的某个孩子不存在,则相应的指针为空。
2.遍历模块
1)先序遍历:先访问根节点,然后分别遍历左子树,右子树,遍历左子树和右子树的方法和遍历整个二叉树的方法一样,而访问根节点是一个固定操作,所以可用递归方法实现。遍历的结束条件是二叉树为空。
2)中序遍历:中序遍历的算法思想和先序遍历一样,仅仅是处理结点的次序不同其思想为,若二叉树为空,则结束遍历操作,否则中序遍历根节点的左子树,访问根节点中序遍历根结点的右子树。
3)后序遍历:后序遍历的基本思想为,若二叉树为空,则结束遍历操作,否则后序遍历根结点的左子树,后序遍历根节点的右子树,访问根结点。
4)广度优先遍历:广度优先遍历的思想为,若二叉树为空,则结束遍历操作,否则按层进行遍历。
5)求二叉树的深度。
四、程序编码:
1、二叉链表由头指针唯一确定,若二叉树为空,则头指针指向空,若结点的某个孩子不存在,则相应的指针为空。用广义表输出二叉树。
源代码:
void CreateBTree(struct BTreeNode ** BT,char * a) /*根据a所定义的二叉树广义表字符串建立对应的存储结构*/
{
struct BTreeNode * p;
/*定义s数组作为存储根结点指针的栈使用*/
struct BTreeNode * s[StackMaxSize];
/*定义top作为s栈的栈顶指针,初值为-1,表示空栈*/
int top=-1;
/*用k作为处理结点的左子树和右子树的标记,k=1处理左子树,k=2处理右子树*/
int k;
/*用i扫描数组a中存储的二叉树广义表字符串,初值为0*/
int i=0;
/*把树根指针置为空,即从空树开始建立二叉树*/
*BT=NULL;
/*每循环一次处理一个字符,直到扫描到字符串结束\0为止*/
while
您可能关注的文档
- 中考物理复习电学.docx
- 中考数学查漏补缺试卷及答案(Word解析版).doc
- 中考化学物质推断题类型讲解及专项训练.doc
- 中考试题汇编──金属和金属材料.docx
- 中考语文名著复习内容.doc
- 中英文机械过滤器使用说明.doc
- 中英文文件控制程序.doc
- 中药提取设备.doc
- 中速磨煤机安装论文.docx
- 中药香料有那些.doc
- 2025年南京普通话测试卷子题型.doc
- 2025年储能电池回收补贴政策解读与环保要求分析.docx
- 《金融软件行业前景分析:2025年量化交易软件与金融风控系统需求增长》.docx
- 2026-2030中国木薯行业最新度报告.docx
- 《2025年航空业国际航线低成本市场复苏竞争调研》.docx
- 《2025年宠物智能穿戴设备行业调研:健康监测与场景化应用》.docx
- 2025年中央遴选笔试真题(B卷)试题及参考答案.docx
- 2025年油墨行业环保排放标准与市场需求分析报告.docx
- 2025年南京期末测试卷语文期末.doc
- 2026-2030中国焦糖色素市场经营发展分析与盈利模式预测研究报告.docx
原创力文档


文档评论(0)