数据结构课程设计二叉树的遍历报告.docxVIP

数据结构课程设计二叉树的遍历报告.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计报告 姓 名 班 级 学 号 指导老师 一、 课程设计目的 培养学生用学到的书本知识解决实际问题的能力; 培养实际工作所需要的动 手能力;培养学生以科学理论和工程上能力的技术,规范地开发大型、复杂、高 质量的应用软件和系统软件具有关键性作用; 通过课程设计的实践, 学生可以在 程序设计方法、上机操作等基本技能和科学作风方面受到比较系统和严格的训练。 二、 课程设计要求 1)学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课程设计的要求。有问题及时主动通过各种方式与教师联系沟通。 2)学生要发挥自主学习能力,充分利用时间,安排好课程设计的时间计划,并在课程设计过程中不断检测自己的计划完成情况,及时向教师汇报。 3)课程设计按照教学计划需要一周时间完成, 一周中每天至少要上两小时的上机来调试 C 或 C++语言设计的程序,总共至少要上机调试程序 10 小时。属教师安排上机时间学生不得缺席。 三、 课程设计内容 二叉树的中序、前序、后序的递归、非递归遍历算法,层次序的非递归遍历算法的实现,应包含建树的实现。 四、 课程设计原理 设计思想 以广义表格式输入一个二叉树, 将其接收至一维数组中, 利用栈结构建立二 叉链表树;通过先、中、后访问根结点递归算法遍历二叉树;利用栈结构依次将 结点入栈、出栈实现二叉树的非递归遍历算法; 利用队列的入队、 出队操作实现 二叉树的层次遍历。 例如: a(c(,d), f(g,))建立如下图所示二叉树。 a c f d g 数据结构 typedef BTREENODEPTR elemtype; 队列数据类型定义 typedef struct{ elemtype *elem; int front,rear; int size; }SqQueue; 栈数据类型定义 typedef struct stack_tag{ elemtype *elem; int top; int size; }SQSTACK; 二叉树数据类型定义 typedef struct btreenode{ char data; struct btreenode *lchild,*rchild; }BTREENODE,*BTREENODEPTR,*BTREE; 主要模块设计 BTREE CreateBtree1(char *str) ;//创建二叉树 void PreOrder(BTREE root) ; //先序递归遍历二叉树 void InOrder(BTREE root) ; //中序递归遍历二叉树 void PostOrder(BTREE root) ; //后序递归遍历二叉树 void PreOrder_1(BTREE root) ; //先序非递归遍历二叉树 void InOrder_1(BTREE root) ; //中序非递归遍历二叉树 void PostOrder_1(BTREE root) ; //后序非递归遍历二叉树 void LayerOrder(BTREE root) ; //层次遍历 其他模块包括栈的初始化及其基本操作和队列的初始化及基本操作。 将以广义表形式输入的二叉树接收 到数组 str[80] 中,成功建立二叉树 主菜单 先 中 后 先 中 后 层 序 序 序 序 序 序 次 递 递 递 非 非 非 遍 归 归 归 递 递 递 历 遍 遍 遍 归 归 归 历 历 历 遍 遍 遍 历 历 历 结束 详细设计 二叉树的建立 其中 mark 的值 1、2、3、4 分别指 str[i] 为字母、‘ (’、‘,’、‘)’; tag 为左、右孩子的标志; root=null N str[0] 是否为字母 Y mark=1 ; root-data=str[0],root-lchild=root-rchild=null;p=root; 检查 str[1~ ’\0’] ‘(’ ‘)’ ‘,’ Y mark=4 mark==3 mark==2 N N mark=2 pop 为空 mark=3 str[i] 入栈 N tag=1 tag=0 Y  ‘ )’ mark==1 N 栈不空 Y 新建结点 p p-data=str[i] p-lchild=p- rchild=null tag==0? 栈顶 栈顶 -lchild=p -rchild=p 循环结束后 return root return null 二叉树的递归遍历 (以先序遍历为例 ) 开始 Y 结点为空 N 访问根节点 先序遍历方式遍历左子树 先序遍历方式遍历右子树 结束 二叉树的非递归遍历 (以先序遍历为例 ) 初始化队列, root 入队 N 栈非空 结束 Y 出栈 p;打印 p-data p-lchild!=null Y N p-lc

文档评论(0)

bcll + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档