C++课程设计(论文)-二叉树的应用.doc_第1页
C++课程设计(论文)-二叉树的应用.doc_第2页
C++课程设计(论文)-二叉树的应用.doc_第3页
C++课程设计(论文)-二叉树的应用.doc_第4页
C++课程设计(论文)-二叉树的应用.doc_第5页
免费预览已结束,剩余17页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计的题目名称课程设计报告书二叉树的应用2010-10hunan normal universityelectronic & information engineering department课程设计题目二叉树的应用指导教师姓名指导老师职称学生姓名所属班级任务要求二叉树的中序、前序、后序的递归与非递归遍历算法,按层次遍历的非递归遍历算法的实现,应包含建树的实现,树与二叉树的转换的实现主要实施步骤1、 构造二叉树,树以及相关的数据结构2、 建立二叉树3、 二叉树的不同遍历4、 树的遍历5、 树与二叉树的转换6、 届面的设计结论通过这次的课程设计,进一步的加强了对二叉树及树的了解,尝试了种新的建树的方法,通过类似于建查找二叉树:大的是兄弟,小的孩子来建树,这样不会限制树的维度,只根据于用户输入的数据来建,降低了用户输入的难度。另外,也发现将二叉树用于其它的系统的数据存储,查找时会比较容易,以后可试着研究把二叉树作为一种有效的存储手段。湖南师范大学工学院电子与信息工程系课程设计登记表注:此表格内容中的任务要求为指导教师提供的课程设计要求,主要实施步骤是指课程设计的时间安排,结论是指通过课程设计得出的有关结论及课程设计不足之处或进一步开发方向。目 录1引言4 1.1 课程设计目标41.2编程工具(编程环境)介绍41.3实施时间及主要实施步骤42.需求分析43系统总体设计54数据结构设计55详细设计与实现6 5.1功能模块1 65.1.1详细设计6 5.1.2算法流程65.1.3界面设计及测试结果75.2功能模块8 5.2.1详细设计85.2.2算法流程85.2.3界面设计及测试结果105.3功能模块12 5.3.1详细设计125.3.2算法流程125.3.3界面设计及测试结果146算法分析157、测试结果158结论229参考文献221 引言1.1 课程设计目标1、 建树的实现2、 二叉树的中序、前序、后序的递归与非递归遍历算法的实现3、 按层次遍历的非递归遍历算法的实现4、 树与二叉树的转换的实现1.2 编程工具(编程环境)介绍在windeow x p 下用的 dev-c+ 4.9.9.2 编程工具c+是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。1.3 实施时间及主要实施步骤 实施时间:9月13号9月24号 主要实施步骤:1、构造二叉树,树以及相关的数据结构 2、建立二叉树3、二叉树的不同的遍历 4、树的遍历 5、树与二叉树的转换 6、届面的设计2 需求分析本程序的功能是采用查找二叉树的方法建树,并对二叉树进行递归前序遍历、中序遍历和后序遍历,用栈实现非递归的前序、中序和后序遍历,还有对二叉树的层次遍历,以及树的建立,树的广度优先和深度优先遍历,树与二叉树的转换。本程序要求用户以字符输入,以#结束输入,采用查找二叉树的方法建树。本程序输出结果以用户要求为准,可打印出二叉树的递归与非递归的先序、中序和后序遍历以及层次遍历,还有树的广度优先和深度优先遍历以及树转换成二叉树后的先序遍历。演示程序以用户与计算机对话的方式进行,即在计算机终端上显示提示信息后,由用户在键盘上输入相应动作的序号和相应的输入数据。测试数据:第一组:j ld e b a h i u x f d h n 第二组:7 4 3 2 8 9 0 第三组:* ) ( ? % ! = + 3 系统总体设计系统共分为三个模块:first,arytree,ntreefirst模块是作为与用户交流的第一个接口,通过它将选择是对树或二叉树进行操作。arytree模块是对二叉树的全部操作,它又分为建树(maketree)模块、先序遍历(xianxu)模块、中序遍历(zhongxu)模块、后序遍历(houxu)模块、层次遍历(cenchi)模块,它们分别完成二叉树的建立,以及递归和非递归的先序遍历、中序遍历、后序遍历和层次遍历算法。ntree模块是对树的全部操作,它又分为建树(makentree)模块、深度优先遍历(shendu)模块、广度优先遍历(guangdu)模块、树转换成二叉树(change)模块,它们分别完成树的建立,以及深度优先、广度优先和树转换成二叉树算法。4 数据结构设计二叉树的数据结构:1、 二叉树结点:jiedian:classdata:charleftchild:jiedian *rightchild:jiedian *2、 二叉树结构:tree:structcurrent:jiedian *end:jiedian *houxu(jiedian *):intmaketree():intxianxu(jiedian *):intzhongxu(jiedian *):intcenchi():voidhouxu():voidxianxu():voidzhongxu():voidtree():constructor3、 二叉树队列:treequeue:structaddress:jiedian *next:treequeue *4、 二叉树栈结点:stacknode:structtreeaddress:jiedian *next:stacknode *5、 二叉树栈:stack:structhead:stacknode *tail:stacknode *pop():jiedian *push(jiedian *):voidstack():constructor6、 树结点:ntreenode:structdata:charbrother:ntreenode *child:ntreenode *7、 树结构:ntree:structcurrentn:ntreenode *endn:ntreenode *change(tree *tree):intguangdu(ntreenode *):intmakentree():intshendu(ntreenode *):intntree():construdtor8、 树栈结点:stacknodes:strudttreeaddress:ntreenode *next:stacknodes *9、 树栈:stacks:structhead:stacknodes *tail:stacknodes *pop():ntreenode *push(ntreenode *):voidstacks():constructor10、树队列:ntreequeue:structaddress:ntreenode *next:stacknodes *5 详细设计与实现5.1 功能模块1详细设计5.1.1 详细设计 1) 模块名称first2) 功能说明调用one模块输出系统首界面提供给用户选择想要的操作对象:树和二叉树,选择树后会调用tree模块或选择二叉树调用arytree模块 3) 输入参数的名称、数据类型、顺序位置、格式无输入参数4) 输出参数的名称、数据类型、顺序位置、格式无返回参数,打印输出画面为5) 所调用的其他功能构件one,ntree,arytree6) 被调用的其他功能构件ntree,arytree5.1.2 算法流程调用ntree模块选择序号输入调用arytree模块退出102void first()int i;one();while(1) cini; if(i=0&i=2) break; else coutn; switch(n) case 1:cout递归先序遍历二叉树:; tree.xianxu(tree.current); coutendl; cout非递归先序遍历二叉树:; tree.xianxu(); break; case 2:cout递归中序遍历二叉树:; tree.zhongxu(tree.current); coutendl; cout非递归中序遍历二叉树:; tree.zhongxu(); break; case 3:cout递归后序遍历二叉树:; tree.houxu(tree.current); coutendl; cout非递归后序遍历二叉树:; tree.houxu(); break; case 4:cout=1&nm; switch(m) case 1:cout树的深度优先遍历:; ntree.shendu(ntree.currentn); break; case 2:cout=1&m=3) continue; else break; 5.3.3 界面设计及测试结果6 算法分析创建二叉树 , 时间复杂度 o(n) , 空间复杂度 o(n)树对二叉树的转换, 这里不确定树的维度因此时间复杂度o(m*m*n),空间复杂度 o(n),m是指树的维度先序遍历二叉树(递归), 时间复杂度 o(2 * n) , 空间复杂度 o(1)n 是这里的总结点个数,因为这里要访问到每个叶子结点的子结点,所以是o(2*n),但是这里的递归调用的时候还要很多保护场景操作所要的时间先序遍历二叉树(非递归), 时间复杂度o(n*n) , 空间复杂度 o(n)中序遍历二叉树(递归), 时间复杂度 o(n) , 空间复杂度 o(1)中序遍历二叉树(非递归), 时间复杂度 o(n*n) , 空间复杂度o(n)后序遍历二叉树(递归), 时间复杂度o(n) , 空间复杂度 o(1)后序遍历二叉树(非递归), 时间复杂度 o(n*n) , 空间复杂度o(n)层遍历二叉树(非递归), 时间复杂度 o(n) , 空间复杂度 o(n)7 。测试结果第一组测试数据:j l d e b a h i u x f d h n 第二组:7 4 3 2 8 9 0 第三组:* ) ( ? % ! = + 8 结论通过这次的课程设计,进一步的加强了对二叉树及树的了解,尝试了种新的建树的方法,通过类似于建查找二叉树:大的是兄弟,小的孩子来建树,这样不会限制树的维度,只根据于用户输入的数据来建,降低了用户输入的难度。另外,也发

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论