二叉排序树与平衡二叉树的实现课程设计.docx
《二叉排序树与平衡二叉树的实现课程设计.docx》由会员分享,可在线阅读,更多相关《二叉排序树与平衡二叉树的实现课程设计.docx(20页珍藏版)》请在三一办公上搜索。
1、攀枝花学院本科学生课程设计任务书题目二叉排序树与平衡二叉树的实现1、课程设计的目的1)使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操 作实现算法,以及它们在程序中的使用方法。2)使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。3)使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)1)(1)以回车(n)为输入结束标志,输入数列L,生成一棵二叉排序树T;(2)对二叉排序树T作中序遍历,输出结果;(3)计算二叉排序树T查找成功的平均查找长度,输出结果;(4
2、)输入元素x,查找二叉排序树T,若存在含x的结点,则删该结点,并作中序遍历(执行操作2);否则输出信息“无x”;(5)用数列L,生成平衡的二叉排序树BT:当插入新元素之后,发现当前的二叉排序树BT不是平衡的二叉排序树,则立即将它转换成新的平衡的二叉排序树BT;(6)计算平衡的二叉排序树BT的平均查找长度,输出结果。3、主要参考文献1 刘大有等,数据结构(C语言版),高等教育出版社2 严蔚敏等,数据结构(C语言版),清华大学出版社3 William Ford, William Topp,Data Structure with C+清华大学出版社4 苏仕华等,数据结构课程设计,机械工业出版社4、课
3、程设计工作进度计划第1天完成方案设计与程序框图第2、3天编写程序代码第4天程序调试分析和结果第5天课程设计报告和总结指导教师(签字)日期年 月 日教研室意见:年 月 日学生(签字):接受任务时间:年 月 日注:任务书由指导教师填写。课程设计(论文)指导教师成绩评定表题目名称一叉排序树与平衡一叉树的实现评分项目分值得分评价内涵工作表现20%01学习态度6遵守各项纪律,工作刻苦努力,具有良好的科学 工作态度。02科学实践、调研7通过实验、试验、查阅文献、深入生产实践等渠 道获取与课程设计有关的材料。03课题工作量7按期圆满完成规定的任务,工作量饱满。台户 能 力 水平 35%04综合运用知识的能力
4、10能运用所学知识和技能去发现与解决实际问题, 能正确处理实验数据,能对课题进行理论分析, 得出有价值的结论。05应用文献的能力5能独立查阅相关文献和从事其他调研;能提出并 较好地论述课题的实施方案;有收集、加工各种 信息及获取新知识的能力。06设计(实验)能力,方案 的设计能力5能正确设计实验方案,独立进行装置安装、调试、 操作等实验工作,数据正确、可靠;研究思路清 晰、完整。07计算及计算机应用能力5具有较强的数据运算与处理能力;能运用计算机 进行资料搜集、加工、处理和辅助设计等。08对计算或实验结果的分析 能力(综合分析能力、技 术经济分析能力)10具有较强的数据收集、分析、处理、综合的
5、能力。成果质量45%09插图(或图纸)质量、篇 幅、设计(论文)规范化 程度5符合本专业相关规范或规定要求;规范化符合本 文件第五条要求。10设计说明书(论文)质量30综述简练完整,有见解;立论正确,论述充分, 结论严谨合理;实验正确,分析处理科学。11创新10对前人工作有改进或突破,或有独特见解。成绩指导教师评语指导教师签名:年 月曰摘要及关键字本程序中的数据采用“树形结构”作为其数据结构。具体采用的是“二叉排 序树”。二叉排序树(又称二叉查找树):(1)若左子树不空,则左子树上所有节点的 值均小于它的根结点的值;(2)若右子树不空,则右子树上所有节点均大于它的 根结点的值;(3)它的左右子
6、树分别为二叉排序树。二叉平衡树:若不是空树,收1)左右子树都是平衡二叉树;(2)左右子树的 深度之差的绝对值不超过1。本次实验是利用二叉排序树和平衡二叉树达到以下目的:(1)以回车(n) 为输入结束标志,输入数列L,生成一棵二叉排序树T; (2)对二叉排序树T作中 序遍历,输出结果;(3)计算二叉排序树T查找成功的平均查找长度,输出结果;(4)输入元素x,查找二叉排序树T,若存在含x的结点,则删该结点,并作中序遍历 (执行操作2);否则输出信息“无x”;(5)用数列L,生成平衡的二叉排序树BT: 当插入新元素之后,发现当前的二叉排序树BT不是平衡的二叉排序树,则立即 将它转换成新的平衡的二叉排
7、序树BT; (6)计算平衡的二叉排序树BT的平均查 找长度,输出结果。关键字:数列L,结点,二叉排序树,平衡二叉树目录摘要 31绪论 51.1课程设计的目的 51.2相关知识的阐述 51.2.1 一位数组的存储结构 51.2.2建立二叉排序树 51.2.3中序遍历二叉树 51.2.4平均查找长度 61.2.5平均二叉树(AVL树)61.2.6平衡因子71.2.7平衡二叉树的调整方法 72方案设计82.1模块功能83算法设计 83.1算法流程图84详细设计104.1主程序 104.2定义二叉树结构 114.3建立二叉树114.3.1二叉排序树的查找114.3.2二叉排序树的插入114.4中序遍历
8、 124.5平均查找长度 124.6删除节点 124.7判断平衡二叉树135调试分析145.1时间复杂度的分析145.2运行结果 145.3结果分析 156课程设计总结16参考文献 171绪论1.1课程设计的目的(1)使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结 构、存储结构和操作实现算法,以及它们在程序中的使用方法。(2)使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软 件设计的能力。(3)使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设 计的基本能力。1.2相关知识的阐述1.2.1 一维数组的存储结构建立二插排序树,首先用一个一维数组记录下读入的
9、数据,然后再用边查找边 插入的方式将数据一一对应放在完全二叉树相应的位置,为空的树结点用“0”补 齐。1.2.2建立二叉排序树二叉排序树是一种动态树表。其特点是:树的结构通常不是一次生成 的,而是在查找过程中,当树中不存在关键字等于给定值的节点时再进行 插入。新插入的结点一定是一个新添加的叶子节点,并且是查找不成功时 查找路径上访问的最后一个结点的左孩子或右孩子结点。插入算法:首先执行查找算法,找出被插结点的父亲结点;判断被插结点是其父亲结点的左、右儿子。将被插结点作为叶子结点 插入;若二叉树为空,则首先单独生成根结点。注意:新插入的结点总是叶子结点。1.2.3中序遍历二叉树中序遍历二叉树算法
10、的框架是:若二叉树为空,则空操作;否则(1)中序遍历左子树(L);访问根结点(V);中序遍历右子树(R)。中序遍历二叉树也采用递归函数的方式,先访问左子树2i,然后访问根结点i, 最后访问右子树2i+1.先向左走到底再层层返回,直至所有的结点都被访问完毕。 1.2.4平均查找长度计算二叉排序树的平均查找长度时,采用类似中序遍历的递归方式,用s记录 总查找长度,j记录每个结点的查找长度,s置初值为0,采用累加的方式最终得 到总查找长度,。平均查找长度就等于s/i(i为树中结点的总个数)。假设在含有n(n=1)个关键字的序列中,i个关键字小于第一个关键字, n-i-1个关键字大于第一个关键字,则由
11、此构造而得的二叉排序树在n个记录的查 找概率相等的情况下,其平均查找长度为:ASL(n,i)=1+i*(P(i)+1) + (n-i-1)(P(n-i-1)+1)/n其中P(i)为含有i个结点的二叉排序树的平均查找长度,则P(i)+1为查找左 子树中每个关键字时所用比较次数的平均值,P(n-i-1)+1为查找右子树中每个 关键字时所用比较次数的平均值。又假设表中n个关键字的排列是“随机”的,即 任一个关键字在序列中将是第1个,或第2个,或第n个的概率相同,则可对 上式从i等于0至n-1取平均值。最终会推导出:当 n=2 时,ASL(n)=2(1 + 1/n)ln(n)由此可见,在随机的情况下,
12、二叉排序树的平均查找长度和log (n)是等数 量级的。另外,含有n个结点的二叉排序树其判定树不是惟一的。对于含有同样一组结 点的表,由于结点插入的先后次序不同,所构成的二叉排序树的形态和深度也可能 不同。而在二叉排序树上进行查找时的平均查找长度和二叉树的形态有关: 在最坏情况下,二叉排序树是通过把一个有序表的n个结点依次插入而生 成的,此时所得的二叉排序树蜕化为棵深度为n的单支树,它的平均查找长度和 单链表上的顺序查找相同,亦是(n+1)/2。 在最好情况下,二叉排序树在生成的过程中,树的形态比较匀称,最终得 到的是一棵形态与二分查找的判定树相似的二叉排序树,此时它的平均查找长度 大约是lg
13、n。 插入、删除和查找算法的时间复杂度均为O(lgn)。1.2.5平衡二叉树(AVL树) 平衡二叉树(Balanced Binary Tree)是指树中任一结点的左右子树的高 度大致相同。 任一结点的左右子树的高度均相同(如满二叉树),则二叉树是完全 平衡的。通常,只要二叉树的高度为O(1gn),就可看作是平衡的。 平衡的二叉排序树指满足BST性质的平衡二叉树。 AVL树中任一结点的左、右子树的高度之差的绝对值不超过1。在最 坏情况下,n个结点的AVL树的高度约为1.44lgn。而完全平衡的二叉树高度约 为lgn,AVL树是最接近最优的。1.2.6平衡因子二叉树上任一结点的左子树深度减去右子树
14、的深度称为该结点的平衡因 子,易知平衡二叉树中所有结点的因子只可能为0,-1和1。平衡二叉排序树的在平衡因子绝对值等于2时开始调整到绝对值为1或0, 在平衡因子绝对值为2时,二叉排序树会出现四种不同的情况的树形,因此这时 需要分别单独讨论来降低平衡因子。1.2.7平衡二叉树的调整方法平衡二叉树是在构造二叉排序树的过程中,每当插入一个新结点时, 首先检查是否因插入新结点而破坏了二叉排序树的平衡性,若是,则找出 其中的最小不平衡子树,在保持二叉排序树特性的前提下,调整最小不平 衡子树中各结点之间的链接关系,进行相应的旋转,使之成为新的平衡子 树。具体步骤如下:(1) 每当插入一个新结点,从该结点开
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二叉排序树 平衡 二叉 实现 课程设计

链接地址:https://www.31ppt.com/p-5004188.html