- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
6.1 二叉搜索树 对此二叉树进行中序遍历,结果为: 12,15,18,23,26,30,52,63,74 特点:每个结点的关键字在二叉树中按一定次序排列。关键字可以是数字,也可以是字符或字符串。 30 15 52 12 23 74 63 18 26 左图二叉搜索树的特点: 每个结点的左子树中所有结点的关键字值都小于该点的关键字值。 每个结点的右子树中所有结点的关键字值都大于该点的关键字值。 6.1.3二叉搜索树的运算——查找、插入、删除 1、查找:在二叉搜索树上,查找具有关键字item的结点。 基本思想:若二叉搜索树非空,从根结点开始,判断结点的关键字是否等于item。 1) 若item==根结点关键字:找到,由item带回根结点的完整值,返回true。 2) 若item 根结点关键字:到该点的左子树中继续查找 3) 若item 根结点关键字:到该点的右子树中继续查找 在左子树或右子树中的查找过程仍然是二叉搜索树的查找。因此,是递归查找过程。 30 15 52 12 23 74 63 18 26 例如:在左图二叉搜索树中查找23、48,查找过程怎样?查找过程中各需要比较几次? 问:最少和最多比较次数? 时间复杂度分析: 最少需要比较1次,最多比较次数=树的深度 根据二叉树性质5可知:理想平衡树的深度=[log2n] 取下整+1 所以,在理想平衡树上查找,时间复杂度为O(log2n) 最坏情况是在单支树上查找,树深度=n,故时间复杂度为O(n) 一般情况,认为二叉搜索树上的查找时间复杂度为O(log2n) 线性表上查找的时间复杂度O(n),此为搜索树之优点所在。 2、插入:往二叉搜索树中插入结点,要求插入后仍保持有序。 基本思想:从根结点开始找插入的合适位置, 1) 若item 根结点关键字:插入到根的左子树中 2) 若item 根结点关键字:插入到根的右子树中 显然,插入到左子树或插入到右子树的过程仍然是一个往二叉搜索树中插入结点的过程,因此是递归的。 调用这个插入算法,可以生成一棵具有n个结点的二叉搜索树。 问:已知一组元素为(46,25,78,62,12,37,70,29),画出这组元素生成的一棵二叉搜索树。 3、删除:要求删除后仍保持为一棵二叉搜索树。 30 15 52 12 23 74 63 18 26 问:左图中要删除18、74、23、15、30结点,分别应该怎样删除? 删除叶结点:直接删除。即将其双亲点链接到它的指针去掉(置为空) 删除单支结点:将其后继结点(左孩子或右孩子)代替被删除点的位置。 删除双支结点: 第1步:找到它的中序前驱点 第2步:中序前驱点代替被删除点位置 第3步:中序前驱点的左指针代替前驱点位置 6.2 堆 特点:堆和二叉搜索树类似,每个结点的关键字在二叉树中按一定次序排列。 12 10 6 7 8 14 6 5 9 25 30 大根堆的特点: 1. 必须是完全二叉树。 2. 每个结点的关键字值都大于或等于其子树结点的关键字值。故堆顶结点有最大值。 6.2 堆 小根堆的特点: 1. 必须是完全二叉树。 2. 每个结点的关键字值都小于或等于其子树结点的关键字值。故堆顶结点有最小值。 7 10 6 4 8 2 20 50 10 21 11 小根堆的定义如下: 堆是一棵完全二叉树。 其根结点的值小于等于左、右孩子结点(若有的话)的值。 以左、右孩子为根的子树也各是一个堆。 大根堆的定义:将上述定义中的“小于等于”改为“大于等于”即可。 堆与二叉搜索树最大的差异:堆不管左、右孩子的大小顺序。 6.2.1 堆的定义 堆的意义:最快的找到最大/最小值。堆结构的常用运算有:插入一个元素重新构造堆结构(堆的插入操作),取走(即删除)最大/最小值后重新构造堆结构(堆的删除操作)。上述插入和删除操作的时间复杂度均为O(lb n),而其他方法至少为O(n)。 堆的应用:因此,堆在实践中主要用于调度算法。比如优先级调度,每次取优先级最高的。在计算机操作系统中,管理一个共享资源就需要使用一个堆。又比如时间驱动,每次取时间最小/等待最长的等等 。 6.2.1 堆的定义 采用哪种存储方式更好?顺序or 链接? 由于堆是一棵完全二叉树,所以采用顺序存储更适合,可以充分利用存储空间。 实现方法: 先对堆中每个结点编号(编号从0开始),然后以编号为下标将结点的值存储到数组中。 顺序存储的C/C++语言定义(静态分配数组): struct Heap {
您可能关注的文档
- 《电磁学》试卷:11级电磁学期中考试试卷.doc
- 《电磁学》试卷:2007级大学物理期末试卷A卷.doc
- 《电磁学精品课件》第二章 静电场中的导体.ppt
- 《电磁学精品课件》第一章 静电学的基本规律(电势与静电能).ppt
- 《电磁学精品课件》第一章 静电学的基本规律-电场强度.ppt
- 《电磁学精品课件》第七章 物质中的磁场.ppt
- 《电路分析基础-水利电子出版社》第1章 电路的基本概念和定律.ppt
- 《电路分析基础-水利电子出版社》第2章 电阻性网络分析的一般方法.ppt
- 《电路分析基础-水利电子出版社》第3章 一阶动态电路分析.ppt
- 《电路分析基础-水利电子出版社》第5章 耦合电感元件合理想变压器.ppt
- 2025年中山市沙溪镇人民政府所属事业单位招聘11人笔试备考题库及参考答案详解一套.docx
- 2025年中山市横栏镇人民政府所属事业单位第二期招聘笔试高频难、易错点备考题库及参考答案详解一套.docx
- 2025年中山市横栏镇人民政府所属事业单位第二期招聘笔试高频难、易错点备考题库含答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库及完整答案详解1套.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库参考答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库及答案详解一套.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库及完整答案详解1套.docx
文档评论(0)