数据结构课程设计 树与二叉树转换实现.doc

数据结构课程设计 树与二叉树转换实现.doc

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

***** + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档