- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
河南工程学院《数据结构与算法》课程设计
成果报告
树与二叉树转换实现
学生学号:
学生姓名:
学 院: 计算机学院
专业班级: 软件工程1341
专业课程: 《数据结构与算法》
指导教师:
2014 年 12 月 29 日
题 目
树与二叉树转换实现
考核项目
考核内容
得分
平时考核
(30分)出勤情况、态度、效率;知识掌握情况、基本操作技能、知识应用能力、获取知识能力
系统设计
(20分)分析系统的功能模块
编程调试
(20分)实现系统的各个功能模块,并完成调试
回答问题
(15分)回答老师针对课程设计提出的问题
课程设计报告撰写
(10分)严格按照规范要求完成课程设计报告
源代码
(5分)按照规范要求完成课程设计源代码的排版
总 评 成 绩
指导教师评语:
日期: 年 月 日
目 录
TOC \o "1-3" \h \z \u 21929 1 课程设计目标与任务 1
3866 1.1 课程设计目标 1
16429 1.2 课程设计任务 1
17459 2 分析与设计 2
9232 2.1 题目需求分析 2
27552 2.2 存储结构设计 2
7853 2.3 算法描述 3
27324 2.4 程序流程图 4
3996 3 程序清单 5
7110 4 测试 9
1305 4.1 测试数据 9
25882 10
24798 11
2858 4.2 测试结果分析 11
8362 5 总结 12
7023 参考文献 13
PAGE
PAGE 18
1 课程设计目标与任务
1.1 课程设计目标
实现树与二叉树的转换
1.2 课程设计任务
(1)实现树与二叉树的转换;
(2)最好能借助语言环境实现图形显示功能,以便将抽象的数据结构以图形方式显示出来,将复杂的运行过程以动态方式显示出来;
(3)给出若干例程,演示通过调用自己所缩写程序来实现相关问题的求解。
2 分析与设计
2.1 题目需求分析
对于一般树,树中孩子的次序并不重要,只要双亲与孩子的关系正确即可。但在二叉树中,左、右孩子的次序是严格区分的。所以在讨论二叉树和一般树的转换时,为不引起混淆,就约定按树上现有结点次序进行转换。
树结构的建立是在数据逻辑结构基础上的数据类型,二叉树则是树结构中最常见和使用最多的类型。通过对二叉树的操作,可以实现多种数据操作,如排序、查找等。
一个好的二叉树遍历算法应包含以下功能:
以递归和和非递归方法建立二叉树或完全二叉树;
实现二叉树的前序遍历、中序遍历、后序遍历;
每种遍历算法皆以递归和非递归方法实现;
2.2 存储结构设计
1
双亲的表示
#difine MAX_TREE_SIZE 100
Typedeft stuct PTNode{
TElemType data;
}PTNode;
Typedef struct{|
PTNode nodes[MAX_TREE_SIZE];
Int r,n;
}PTree;
2
树的孩子表示
Typedeft stuct CTNode{
Int child;
Struct CTNode*next;
}*ChildPtr;
Typedeft stuct{
TElemType data;
}CTBox;
Typedeft stuct{
CTBox nodes[MAX_TREE_SIZE];
Int n,r;
}CTree;
3
孩子兄弟的表示方法
//————树的二叉链表(孩子-兄弟)存储表示
Typedeft stuct CSNode{
ElemType data;
Stuct CSNode *fistchild,*nextsibing;
}CSNode,*CSTree;
2.3 算法描述
1
一般树转换为二叉树
将一般树转化为二叉树的思路,主要根据树的孩子——兄弟存储方式而来
(1)
加线。在各兄弟间用虚线相连。
(2)
抹线。对每个结点仅保留它与最左边孩子的连线,抹去该结点与其它孩子之间的连线。
(3)
旋转。把虚线改为实线从水平方向向下旋转45度,成右斜下方向。
由于二叉树中各结点的右孩子都是原树中该结点的兄弟,而一般的根结点有没有兄弟结点,因此生成的二叉树的根结点没有右子树。在所生成的二叉树中某一结点的左孩子仍是原来树中该节点的长子,并且是它的左孩子。
2
二叉树还原为一般树
二叉树还原为一般树,此时的二叉树必须是由转换而来的没有右子树的二叉树。
(1)
加线。
文档评论(0)