- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章--伸展树与跳表
第3章 伸展树与跳表 字典:词条的集合,一种数据结构,主要包括搜索、插入和删除等基本运算。 伸展树和跳表:是表示字典的高级数据结构。 3.1 伸展树 3.1.1 二叉搜索树 1)根的左子树的所有结点的值都小于根结点,右子树的所有结点的值都大于根结点 2)子树也是二叉搜索树 3)用于表示动态集 实现动态集上定义的基本运算 搜索操作 ResultCode Search(K key,T x) const 在集合中搜索关键字为key的元素,若存在,将其值赋值给x,函数返回Success,否则返回NotPresent。 enum ResultCode{Underflow, Overflow, Success, Duplicate, Fail, NotPresent}; 插入操作 ResultCode Insert(T x) 在集合中搜索关键字为x.key的元素,若存在返回Duplicate。否则,若集合已满,返回Overflow,若未满,插入x,返回Success。 删除操作 ResultCode Remove(K key) 在集合中搜索关键字值为key的元素,若存在该元素,则从集合中删除之,并返回Success,否则,返回NotPresent。 二叉平衡树 每次插入或删除后,重新平衡树形,使之始终保持平衡。 能保证性能,但增加了实现难度。 伸展树 自调节搜索树。 在伸展树上,执行一个m次运算(搜索、插入、删除),总的时间为O(mlogn)。(n是树中元素的个数) 具有良好的平均分摊代价。 是平衡搜索树的很好替代结构。 3.1.2 自调节树和伸展树 伸展树: 一颗二叉搜索树,要求每访问一个元素后,将最新访问的元素移至二叉搜索树的根部,以保证经常被访问的元素靠近根结点. 将一个元素移至根部的操作称为一次伸展. 一般情况下,一个元素被访问后,下一次还要访问它的机会比较大. 是自调整搜索树 3.1.3 伸展操作 一棵伸展树是一棵二叉搜索树,其搜索,插入等操作与二叉搜索树相同,只是每次操作后都紧跟一次伸展操作 伸展操作的目的是将结点x移至根结点,被移动的结点为伸展结点. 3.1.3 伸展操作 伸展结点的确定 1.搜索成功的结点 2.新插入的结点 3.被删除结点的双亲 4.若上述运算失败,则搜索过程中遇到的最后一个结点为伸展结点. 3.1.3 伸展操作 一次伸展操作由一组旋转动作组成 单一旋转 3.1.3 伸展操作 单一旋转(zig右旋转)规则 伸展结点的右子树作为其父结点的左子树 伸展结点与其父结点交换位置 左旋转(zag)规则 伸展结点的左子树作为其父结点的右子树 伸展结点与其父结点交换位置 一次伸展操作由一组旋转动作组成 双重旋转 双重旋转 1. zigzig旋转 1 2 p的右子树做g的左子树,然后g做p的右子树; 第1步:将p右旋转(zig)到g,即pg两节点换位; q的右子树做p的左子树,然后p做q的右子树; 第2步:接着将q右旋转到p 双重旋转 2. zigzag旋转 q的左子树做p的右子树,然后p做q的右子树; 第1步:将q左旋转(zag)到p,即pq两节点换位; 第2步: q的右子树做g的左子树,然后g做q的右子树; 1 2 伸展操作既可以自底向上,也可以自顶向下进行. 2 1 1 2 3.1.4 伸展树类 伸展树类 旋转的实现 插入的实现 3.1.4 伸展树类 结点类 templateclass T struct BTNode { //二叉树结点类 T element; BTNode* lChild,*rChild; BTNode(const T x) { element=x; lChild=rChild=NULL; } }; 构造函数 lChild element rChild 伸展树类 templateclass T, class K class SPTree {//伸展树类 public: SPTree(){root=NULL;} ResultCode Insert(T x); ? protected: BTNodeT* root; private: ResultCode Insert(BTNodeT* p, T x); void LRot(BTNodeT* p); void RRot(BTNodeT* p); ? }; 3.1.4旋转函数(左旋转) template class T void SPTreeT::LRot(BTNodeT* p) { //前置条
您可能关注的文档
- 第2课 翻译的基本概念.ppt
- 第2讲__电场能的性质的描述.ppt
- 第2课 地球仪、纬线、纬度.ppt
- 第2课 电路基础知识 - 上传BD-副本.ppt
- 第2篇第2章建筑剖面设计09.ppt
- 第2课时 异分母分数通分练习.ppt
- 第2讲矩形菱形正方形.ppt
- 第2课时 1.3地球运动 地球自转的意义.ppt
- 第2课时 熔化和凝固规律的应用.ppt
- 第2课时认识记事本和初步使用.ppt
- 2024至2030年中国医药行业深度调研及投资战略分析报告.docx
- 2024至2030年中国可再生能源制氢(绿氢)行业深度调研及投资战略分析报告.docx
- 中国男士公文包行业市场现状分析及竞争格局与投资发展研究报告.docx
- 2024至2030年中国大型龙门式加工中心行业发展预测及投资策略报告.docx
- 茯神市场发展现状调查及供需格局分析预测报告2024-2029版.docx
- 第二章 7 4.固体2023-2024学年新教材高二物理选择性必修3同步课堂高效讲义配套教学设计(人教版).docx
- 第三单元课外古诗词诵读《商山早行》教学设计-2024-2025学年统编版语文九年级上册.docx
- 部编版初中语文七年级语文下册第五单元(教学设计).docx
- 2024至2030年中国饲料搅拌车行业深度调研及投资战略分析报告.docx
- 中国制帽业行业市场现状分析及竞争格局与投资发展研究报告.docx
最近下载
- 20年一造交通案例讲义杨建虎(正式版).pdf
- 五年级上册小学高年级学生读本第3讲《把人民放在心中最高位置》教案.doc VIP
- SY∕T 6671-2017 石油设施电气设备场所ⅰ级0区、1区和2区的分类(2-1).pdf
- 江苏省住宅装饰质量标准.doc
- 小学四年级数学上册亿以内数的读写专项练习题 .docx
- 2023年成人高考数学(文科)真题试卷及答案.docx VIP
- 大家的日语2-课件23-50课第27课.ppt
- ME4057 系列_C10.0微盟原厂规格书.pdf VIP
- 电机学刘慧娟习题答案.pdf
- 《EN50124_1-2016铁路应用_绝缘配合_第1部分:电工电子设备的电气间隙和爬电距离(中文).》.pdf
文档评论(0)