树与二叉树的转换的实现_课程设计 .doc
《树与二叉树的转换的实现_课程设计 .doc》由会员分享,可在线阅读,更多相关《树与二叉树的转换的实现_课程设计 .doc(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、XXXXX学院计算机与信息工程学院课程设计报告课程名称 数据结构 课题名称树与二叉树的转换的实现_课程设计 专业 计算机软件工程 班级 XXXXXXXXXXXXXXX 学号 XXXXXXX 姓名 XXXX 联系方式 XXXXXXXXXXXX 指导教师XXXX 20 14 年 6 月 17 日目 录一、数据结构课程设计任务书1 1.1设计题目1 1.2设计要求1二、设计小组成员1三、指导老师1四、设计课题1五、基本思路及关键问题的解决方法1六、算法及流程图2七调试过程中出现的问题及相应解决办法3八、课程设计心得体会3九、源程序4十、参考文献及资料一、数据结构课程设计任务书1.1设计题目 树与二叉
2、树的转换实现1.2设计要求1、以及树的前序、后序的递归、非递归遍历算法,层次序的 非递归遍历算法的实现,应包含建树的实现。2、遍历的内容应是千姿百态的。二、设计小组成员 金亮三指导老师武彬四设计课题 实现树与二叉树的转换的实现,以及树的前序、后序的递归、非递归遍历算法,层次序的非递归遍历算法的实现,应包含建树的实现。(多种遍历可以只实现一个。)五基本思路及关键问题的解决方法1.二叉树创建用链表实现创建一个树结点的结构体,从键盘输入数据,存入数组。把下标为2*i+1 的值存入左孩子,为2*i+2的存入右孩子。 2.先序遍历二叉树的递归算法若二叉树为空,则空操作;否则(1)访问根结点;(2)先序遍
3、历左子树;(3)先序遍历右子树。void PreOrder(BiNode root)。3.后序遍历二叉树的递归算法若二叉树为空,则空操作;否则(1)后序遍历左子树;(2)后序遍历右子树。(3)访问根结点;void PostOrder(BiNode root)。4.先序非递归算法BiNode根指针,若 BiNode!= NULL对于非递归算法,引入栈模拟递归工作栈,初始时栈为空。5.后序非递归算法BiNode是要遍历树的根指针,后序遍历要求在遍历完左右子树后,再访问根。需要判断根结点的左右子树是否均遍历过。void F_PostOrder(BiNode root)6.层次序遍历算法按照树的层次从
4、左到右访问树的结点,层序遍历用于保存结点的容器是队列。void LevelOrder(BiNode root)。六、算法及流程图退出程序层次遍历开始双亲法建树按照格式输入各个结点输出树的结点情况1主菜单前序遍历(递归)后序遍历(递归)前序遍历(非递归)后序遍历(非递归)输出遍历结果副菜单退出程序23540069七调试过程中出现的问题及相应解决办法在调试过程中出现了很多问题,定义表过长的,处理记录数量错误时程序的异常,记录冲突次数等等。通过问同学,查资料,我知道路定义过长则减少某些属性的字符数。处理记录数量错误时程序的异常则在被调用类(被主程序或其他类调用的类)中捕获异常记录到容器类中,然后抛出
5、;在调用类(非主程序类)中继续捕获,然后同样是记录到错误容器继续向上抛出;依此方法直到最后在主程序中(入口程序类)捕获异常(记住这个捕获一定要捕获所有可能异常的情况)然后连同此次错误信息一并记录到错误容器,写入错误日志,给出相应提示。二叉树遍历中用到的最重要的一个思想就是递归调用,这次作业使我对递归有了深入的理解,尤其是对退回上一层后应执行的语句和结点位置的丝路更加清晰。程序调试比较顺利。 八、课程设计心得体会以前用C编程,只是注重如何编写函数能够完成所需要的功能,似乎没有明确的战术,只是凭意识和简单的语句来堆砌出一段段程序。现在变成感觉完全不同了。在编写一个程序之前,自己能够综合考虑各种因素
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 树与二叉树的转换的实现_课程设计 二叉 转换 实现 课程设计
限制150内