版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实践考核题第二题设计报告书学生姓名XXX学生学号09XXX所在地区XXX提交日期(年/月)2014/6实践题目实现二叉树的建立与遍历需求分析(1)以二叉链表作为存储结构,定义二叉树类型 Bitree 定义二叉链表的存储结构,可以更好地对二叉表的操作,在二叉链表中,data域用于存储二叉树节点中的数据信息;lchild是指向左孩子的指针(左指针)。类似的,rchild是指向右孩子的指针(右指针)。此外,每个二叉链表还必须有一个指向根节点的指针,该指针称为根指针。与链表头指针类似,根指针具有标识二叉链表的作用,对二叉链表的访问只能从根指针开始。若果某个节点的右孩子或者左孩子不存在时,则相应指针数据
2、域为空(#)。由此可知叶节点的左右指针必为空(#)。(2)实现二叉树的以下运算 建立 void CreateBiTree(BiTree *T) 输入二叉树的结点元素,建立二叉链表 建立void CreateBiTree(BiTree *T)函数可以往二叉链表中输入数据和向左右指针的指向是否为#,只有建立了二叉链表才能通过调用先序遍历、中序遍历和后序遍历的函数遍历出二叉树中的数据。 选择一种遍历方式(先序、中序、后序)遍历这棵二叉树 通过选择遍历方式,遍历同一颗二叉树,遍历的次序是不同的,遍历的方法也是不一样的,通过不同的遍历方式的得到二叉树的顺序是不一样,但是都是为了得到二叉树最后的排序。通过
3、先序遍历,先访问的是根节点,然后是左子树,最后是右子树。中序遍历,先遍历左子树,在访问根节点,最后遍历右子树。后序遍历,先遍历左子树,在遍历右子树,左后访问根节点。通过不同的排序方式可以确定一棵唯一的二叉树。概要设计(1) 建立二叉链表: void CreateBiTree(BiTree *T) 首先,定义一个结构体,存储每个节点的信息,并给这个结构体定义别名为Bittree;这个结构体中的数据元素有,保存数据的类型,还有指向左右孩子的指针它的类型和结构体的类型一样。(2) 实现二叉树的以下运算 选择一种遍历方式(先序、中序、后序)遍历这棵二叉树 先序遍历:void PreOrder(BiTr
4、ee T)若被遍历的二叉树为空,执行空操作;否则,依次执行下列操作: 访问根节点; 先序遍历左子树; 先序遍历右子树。中序遍历:void InOrder(BiTree T若被遍历的二叉树为空,执行空操作;否则,依次执行下列操作:中序遍历左子树;访问根节点;中序遍历右子树。后序遍历:void PostOrder(BiTree T)若被遍历的二叉树为空,执行空操作;否则,依次执行下列操作:后序遍历左子树;后序遍历右子树;访问根节点。 上面给出的先序遍历、中序遍历和后序遍历的定义都是递归的,因而根据定义很容易得到相应遍历的递归算法。详细设计#include#include#includetypede
5、f char TElemType;typedef struct SBiTNode TElemType data; struct SBiTNode *lchild,*rchild;BiTNode,*BiTree;/采用左序遍历创建二叉树,用到的是递归算法,参数指针T有点晦涩难懂。void CreateBiTree(BiTree *T) TElemType ch; scanf(%c,&ch); if(ch=#) *T=NULL; else *T=(BiTree)malloc( sizeof(BiTNode) ); if(!*T) exit(-1); (*T)-data=ch; CreateBiTr
6、ee(&(*T)-lchild); CreateBiTree(&(*T)-rchild); /输出函数void Visit(BiTree T)if(T-data != #)printf(%c ,T-data);/先序遍历void PreOrder(BiTree T)if(T != NULL)/访问根节点Visit(T);/访问左子结点PreOrder(T-lchild);/访问右子结点PreOrder(T-rchild);/中序遍历void InOrder(BiTree T) /判断是否为空 if(T!=NULL) /中序访问左子树 InOrder(T-lchild); /访问根节点 Visi
7、t(T); /中序访问右子树 InOrder(T-rchild); /后序遍历void PostOrder(BiTree T) /判断是否为空 if(T!=NULL) /后序访问左子树 PostOrder(T-lchild); /后序访问右子树 PostOrder(T-rchild); /访问根节点 Visit(T); /主函数 int main() BiTree T; printf(清数据数据(#代表空数据位,结束前不要使用回车键):n); CreateBiTree(&T); /创建二叉树 if(T!=NULL) printf(前序遍历n); PreOrder(T); /先序遍历 print
8、f(n); printf(中序遍历n); InOrder(T); /中序遍历 printf(n); printf(后序遍历n); PostOrder(T); /后序遍历 printf(n); elseprintf(二叉树为空!);getch(); return 0;调试分析输入数据6253检查程序执行是否正确:输入数据为空时,检查程序的执行:设计总结在二叉树上无论采用哪种遍历方法,都能够访问遍树中的所有结点。由于访问结点的顺序不同,前序遍历和中序遍历都很难达到设计的要求(求路径);但采用后序遍历二叉树是可行的,因为后序遍历是最后访问根结点,按这个顺序将访问过的结点存储到一个顺序栈中,然后再输出即可。因此,我们可以非递归地后序遍历二叉树T,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《GB-T 37863.1-2019轨道交通 牵引电传动系统 第1部分:城轨车辆》专题研究报告
- 《GBT 21789-2008石油产品和其他液体闪点的测定 阿贝尔闭口杯法》专题研究报告
- 《GBT 15825.6-2008金属薄板成形性能与试验方法 第6部分:锥杯试验》专题研究报告
- 《GBT 2317.3-2008电力金具试验方法 第3部分:热循环试验》专题研究报告
- 道路安全员初次培训课件
- 道路交通安全法课件
- 道县摩托车安全驾驶培训课件
- 2021JACS指南:肺癌手术患者术前肺功能评估解读课件
- 达州吉勤安全培训课件
- 边检业务培训课件
- 国家开放大学电大本科《流通概论》复习题库
- 机关档案汇编制度
- 2025年下半年四川成都温江兴蓉西城市运营集团有限公司第二次招聘人力资源部副部长等岗位5人参考考试题库及答案解析
- 2026福建厦门市校园招聘中小学幼儿园中职学校教师346人笔试参考题库及答案解析
- 2025年高职物流管理(物流仓储管理实务)试题及答案
- 中国古代传统节日与民俗文化
- 高校申报新专业所需材料汇总
- (机构动态仿真设计)adams
- NB-T 31053-2021 风电机组电气仿真模型验证规程
- GB/T 1048-2019管道元件公称压力的定义和选用
- 文化创意产品设计及案例PPT完整全套教学课件
评论
0/150
提交评论