数据结构实验报告(二叉树的基本操作)..docx

数据结构实验报告(二叉树的基本操作)..docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构实验报告(二叉树的基本操作).

计算机科学与技术数据结构实验报告二叉树基本操作演示程序班级:计科1202班姓名:邬继阳学号:0909120629时间:2013.11.16实验内容设计一个与二叉树基本操作相关的演示程序,要求实现以下功能:(1)创建二叉树。按照用户需要的二叉树,构建二叉树。(2)将创建的二叉树以树状形式输出。(3)分别以先序,中序,后序三种遍历方式访问二叉树。(4)输出二叉树的叶子结点以及叶子结点的个数。(5)输出二叉树的高度。实验目的(1)掌握二叉树的存储实现。(2)掌握二叉树的遍历思想。(3)掌握二叉树常见算法的程序实现。概要设计主界面设计为了实现二叉树相关功能的管理,需要设计一个含有多个菜单项的主控菜单子程序以链接系统的各个子功能,方便用户使用本程序。存储结构设计本程序采用二叉链式存储结构(BiTNode)存储二叉树的结点信息。二叉树的链表中的结点至少包括三个域:数据域(data),左孩子指针域(LChild),右孩子指针域(RChild)。系统功能设计本程序除了完成二叉树的创建功能外,还设置了8个子功能菜单。由于这8个子功能都是建立在二叉树的构造上,所以二叉树的创建由主函数main()完成。8个子功能设计描述如下:(1)树状输出二叉树。树状输出二叉树由函数TranslevelPrint()实现。当用户选择该功能时,系统以树状的形式输出用户所创建的二叉树。(2)先序遍历二叉树。由函数PreOrder()实现。该功能按照先序遍历访问二叉树的方法输出先序序列。(3)中序遍历二叉树。由函数InOrder()实现。该功能按照中序遍历访问二叉树的方法输出中序序列。(4)后序遍历二叉树。由函数PostOrder()实现。该功能按照后序遍历访问二叉树的方法输出后序序列。(5)输出叶子结点。该功能采用先序遍历二叉树的方法,依次输出叶子结点。由函数PreOrderLeaf()实现。(6)输出叶子结点个数。该功能计算并输出二叉树叶子结点的个数,由LeafCount()函数实现。采用递归算法计算二叉树叶子结点的个数,算法思想是:当二叉树为空时,叶子总结点数为0;当二叉树只有一个结点时,叶子结点个数为1;否则,叶子结点总数为左右子树结点之和。(7)输出二叉树的深度。该功能即输出二叉树结点所在层次的最大值。由函数PostOrderDepth()实现。(8)退出。由函数exit()实现。详细设计详细设计参见附录源代码。测试结果(1)首先输入二叉树结点:(2)出现主界面:(3)分别选择不同的功能即可得到不同的结果:树状输出:先序,中序,后序遍历分别显示如下:(4)选择功能5,6,7即可出现叶子结点,叶子结点的个数,和该二叉树的深度最后,选择功能8,退出该系统。实验心得(1)总结本次实习的收获?通过本次实验,加强了对二叉树的认识与相关操作的算法、编程实现;通过实验,我熟悉二叉树树的基本操作,掌握二叉树的实现以及实际应用。加深了对二叉树的理解,逐步培养解决实际问题的编程能力以及进一步了解了二叉树图转化为括号表示法。递归的使用,要注意,初始时的状态以及如何使用递归,注意普遍性,思考时从普通的开始。通过这次上机操作,让我明白书本上的程序一定要自己去调试,这样才能将书本程序与老师讲的内容融会贯通,达到温故而知新?(2)本系统的不足之处?系统的健壮行不够强?代码不够优化。?(3)遇到的困难???????对于一些不会编译的程序,通过百度会了求叶子结点数,然后仿照求叶子结点数的方法,自己编出了求度为2的结点数的算法,学会了很多东西,对编程更加有兴趣了。附录源代码:#includeconio.h#includestdio.h#includestdlib.h#includemath.h#define MAXLEN 100#define NLAYER 4typedefstructBiTNode{/* data */char data;structBiTNode *LChild,*RChild;}BiTNode,*BiTree;BiTree T;//建立二叉树void CreatBiTree(BiTree *bt)//按照先序序列建造二叉树{charch;scanf(%c,ch);if(ch==#) *bt=NULL;else{*bt=(BiTree)malloc(sizeof(BiTNode));//生成一个新的结点(*bt)-data=ch;CreatBiTree(((*bt)-LChild));//生成左子树CreatBiTree(((*bt)-RChild));}}//树形打印二叉树voidTranslevelPrint(BiTreebt){//本算法实现二叉树的按层打印struct node{/* data */BiTreevec[MAXLEN];//存放树结点int layer[

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档