- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
伸展树的基本操作与应用
芜湖一中 杨思雨
引言
二叉查找树(Binary Search Tree) 可以被用来表示有序集合、建立索引或优先队列等。
最坏情况下,作用于二叉查找树上的基本操作的时间复杂度,可能达到O(n)。
某些二叉查找树的变形,基本操作在最坏情况下性能依然很好,如红黑树、AVL树等。
伸展树
伸展树(Splay Tree)是二叉查找树的改进。
对伸展树的操作的平摊复杂度是O(log2n)。
伸展树的空间要求、编程难度非常低。
伸展树
伸展树与二叉查找树一样,也具有有序性。
即伸展树中的每一个节点x都满足:该节点左子树中的每一个元素都小于x,而其右子树中的每一个元素都大于x。
伸展树可以自我调整,这就要依靠
伸展操作Splay(x,S)
伸展操作Splay(x,S)是在保持伸展树有序性的前提下,通过一系列旋转操作将伸展树S中的元素x调整至树的根部的操作。
在旋转的过程中,要分三种情况分别处理:
1)Zig 或 Zag
2)Zig-Zig 或 Zag-Zag
3)Zig-Zag 或 Zag-Zig
伸展操作Splay(x,S) 情况1
Zig或Zag操作:
节点x的父节点y是根节点。
伸展操作Splay(x,S) 情况2
Zig-Zig或Zag-Zag操作:
节点x的父节点y不是根节点,且x与y同时是各自父节点的左孩子或者同时是各自父节点的右孩子。
伸展操作Splay(x,S) 情况3
Zig-Zag或Zag-Zig操作:
节点x的父节点y不是根节点,x与y中一个是其父节点的左孩子而另一个是其父节点的右孩子。
伸展操作举例
Splay(1,S)
伸展树的基本操作
求前趋
求后继
合并
分离
查找
插入
删除
求最大值
求最小值
伸展操作是基础!
时间复杂度分析
S(x)表示以x为根的子树
|S|表示树S的节点个数
令μ(S) = [ log2|S| ]
([ ]表示取下整)
μ(x)=μ(S(x))
时间复杂度分析
用1元钱表示一个单位时间代价。
伸展树不变量:在任意时刻,伸展树中的任意节点x都至少有μ(x)元的存款。
对某个节点的访问和旋转
—会计方法
时间复杂度分析
在Splay调整过程中,费用将会用在以下两个方面:
(1)为使用的时间付费。也就是每一次单位时间的操作,要支付1元钱。
(2)当伸展树的形状调整时,需要加入一些钱或者重新分配原来树中每个节点的存款,以保持不变量继续成立。
时间复杂度分析
用μ(x)和μ’(x)分别表示在进行一次旋转操作前后节点x处的存款。
分三种情况分析旋转操作的花费:
(1)Zig 或 Zag
(2)Zig-Zig 或 Zag-Zag
(3)Zig-Zag 或 Zag-Zig
时间复杂度分析 情况1
Zig或Zag
为了保持伸展树不变量继续成立,需要花费:
此外我们花费另外1元钱用来支付访问、旋转的基本操作。
所以,一次Zig或Zag操作的花费至多为3(μ(S)-μ(x))+1
时间复杂度分析 情况2
Zig-Zig或Zag-Zag
为了保持不变量,需要花费:
与情况1一样,也需要花费另外的1元钱来支付单位时间的操作。
时间复杂度分析 情况2
Zig-Zig或Zag-Zag
当μ’(x) μ(x) 时,显然2 (μ’(x) -μ(x)) +1 ≤ 3 (μ’(x) -μ(x))
也就是进行Zig-Zig操作的花费不超过3 (μ’(x) -μ(x))
当μ’(x) =μ(x) 时,可以证明:
μ’(x) +μ’(y) + μ’(z) μ(x) +μ(y) +μ(z)
也就是说我们不需要任何花费保持伸展树不变量,并且可以得到退回来的钱,并用其中的1元支付单位操作的费用。
一次Zig-Zig或Zag-Zag的花费至多为3 (μ’(x) -μ(x))
时间复杂度分析 情况3
Zig-Zag或Zag-Zig
与情况2相似,可以证明
一次Zig-Zag或Zag-Zig操作的花费至多为3 (μ’(x) -μ(x))
时间复杂度分析
Zig
Zig-Zig
Zig-Zag
3(μ(S)-μ(x))+1
3(μ’(x)-μ(x))
3(μ’(x)-μ(x))
Splay(x,S)
3(μ(S)-μ(x))+1
O(log2n)
基本操作
伸展树的应用
营业额统计Turnover (HNTSC-02)
分析公司的营业情况是一项相当复杂的工作。经济管理学上定义了一种最小波动值来衡量营业情况:
每天的最小波动值= min { | 该天以前某一天的营业额-该天的营业额 | }
第一天的最小波动值为第一天的营业
您可能关注的文档
- 工行工资格式转换与工资发放程序.doc
- 第3讲 C++程序设计基础.ppt
- 钢筋CAD导图讲义解析.pdf
- 第2章 win7学习.pdf
- 微型计算机原理和接口技术第3章.ppt
- 03第三篇 软件需求分析.ppt
- 零基础组装电脑图文一体免费(非常好及大家分享).ppt
- 第十三章 Experion_PKS_R301.1安装过程详解.pdf
- 第十章 enms集抄系统软件使用说明书(1.0.3).pdf
- 离散件10-基本图类与算法.ppt
- 七年级英语上册三单元写作课教案45.docx
- 湘教版(2019)选择性必修一 2.2 地表形态的变化 课件(共18张PPT).pptx
- 机关党支部争先创优事迹材料.docx
- 湘美版三年级书法下册《综合实践 我写我名》课件(共21张PPT).ppt
- Unit 1 You and Me Section A 训练案(无答案)新人教版英语七年级上册74.docx
- Unit 1 A new start 七年级上册英语外研版(2024)单元质检卷(B卷)(含解析)78.docx
- Unit 2 More than fun 七年级上册英语外研版(2024)单元质检卷(A卷)(含解析)71.docx
- 初一(七年级)下册英语单词表11.doc
- Travelling around Section1 Reading 课件(共24张PPT) 沪教版(2024)七年级上册.pptx
- 2024外研版七上 More than fun Developing ideas教学课件(共16张PPT,内嵌音频).pptx
文档评论(0)