二叉排序树的实现课程设计说明书.docVIP

  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文档。上传文档
查看更多
二叉排序树的实现课程设计说明书

摘 要 数据结构是研究与数据之间的关系,我们称这一关系为数据的逻辑结构,简称数据结构。当数据的逻辑结构确定以后,数据在物理空间中的存储方式,称为数据的存储结构。相同的逻辑结构可以具有不同的存储结构,因而有不同的算法。 本次课程设计,程序中采用树形结构作为其数据结构。具体采用的是二叉排序树一维数组作为其存储结构。一维数组顺序表存储结构是用一组地址连续的存储单元依次自上而下自左而右存储完全二树上的结点元素中序遍历计算二排序树的平均查找长度删除二排序树中某个结点摘 要 I 课题背景的介绍 1 1.1 课题背景 1 1.2 目的 1 需求分析 1 2.1课程设计题目、任务及要求 1 2.2课程设计思想 2 系统总体设计 3 3.1 系统模块划分 3 3.2 二叉排序树的生成过程 3 3.3 主要功能模块设计 3 4 系统详细设计 5 4.1 主函数菜单模块 5 4.2 查找模块 6 4.3 插入模块 7 4.4 中序遍历模块 8 4.5删除模块 9 5 系统连编与运行 1 6 总 结 12 参考文献 13 (1)以回车(\n)为输入结束标志,输入数列L,生成一棵二叉排序树T; (2)对二叉排序树T作中序遍历,输出结果; (3)计算二叉排序树T查找成功的平均查找长度,输出结果; (4)输入元素x,查找二叉排序树T:若存在含x的结点,则删除该结点,并作中序遍历(执行操作2);否则输出信息“无x”; 2.2课程设计思想 建立二叉排序树采用边查找边插入的方式。查找函数采用递归的方式进行查找。如果查找成功则不应再插入原树,否则返回当前结点的上一个结点。然后利用插入函数将该元素插入原树。 对二叉树进行中序遍历采用递归函数的方式。在根结点不为空的情况下,先访问左子树,再访问根结点,最后访问右子树。 计算二插排序树的平均查找长度时,仍采用类似中序遍历的递归方式,用s记录总查找长度,j记录每个结点的查找长度,s置初值为0,采用累加的方式最终得到总查找长度s。平均查找长度就等于s/i(i为树中结点的总个数)。 删除结点函数,采用边查找边删除的方式。如果没有查找到,则不对树做任何的修改;如果查找到结点,则分四种情况分别进行讨论: 1、该结点左右子树均为空; 2、该结点仅左子树为空; 3、该结点仅右子树为空; 4、该结点左右子树均不为空。 系统总体设计 3.1 系统模块划分 二叉排序树是一种动态树表。 二叉排序树的定义:二叉排序树或者是一棵空树,?或者是一棵具有如下性质的二叉树: ⑴ 若它的左子树非空,则左子树上所有结点的值均小于根结点的值; ⑵ 若它的右子树非空,则右子树上所有结点的值均大于根结点的值; ⑶ 左、右子树本身又各是一棵二叉排序树。 3.2 二叉排序树的生成过程 二叉排序树边查找边插入的方式 3.3 主要功能模块设计 程序主要设计了五个功能:首先是创建二叉排序树,完成后出现任务菜单,菜单中设计了四个模块:退出,中序遍历,计算平均查找长度和删除结点。 主函数流程如下: 图3.1.1主函数流程图 4 系统详细设计 4.1 主函数菜单模块 该模块功能主要是给用户提供清晰的可操作界面,易于人机操作,并能很好的调用其他各模块,使程序更加优化,丝路更加清晰,结构更加明了,提高了程序的实用性。其算法如下: Void main() { node T=NULL; Int num; Int ch=0; Node p=NULL; Printf(please input a list o numbers end with zero:); Do{ scanf(%d,num); If(!num) printf(you have finished your input!\n); Else insertBST(T,num); } while(num); Printf(\n\n--the menu of the opperation---\n);/*主程序菜单*/ Printf(\n 0: exit); Printf(\n 1: inorder travel the tree); Printf(\n 2: delete); While(ch==ch) { printf(\n choose the opperation to continue:); Scanf(%d,ch); Switch(ch){ Case 0

文档评论(0)

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

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

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档