原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1269伸展树的运用,如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using std::swap; 7...
分类:
其他好文 时间:
2015-05-01 10:33:12
阅读次数:
125
目录
伸展树的介绍
伸展树的C实现
1 节点定义
2 旋转
3 伸展树的伸展
4 搜索
4 伸展树的插入和删除
全部代码和参考资料1. 伸展树的介绍伸展树(splay tree)是一种搜索二叉树,它能在O(log n)O(log\ n)内完成插入、查找和删除操作。
(1)伸展树满足搜索二叉树的性质,左子节点小于根节点,右子节点大于等于根节点。
(2)伸展树独有特点:当某个节点被访问时,伸展树会通...
分类:
其他好文 时间:
2015-04-30 12:38:57
阅读次数:
187
原题链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18902伸展树的区间翻转剪切。。。如下: 1 #include 2 #include 3 #include 4 #include 5 const int Ma...
分类:
其他好文 时间:
2015-04-25 15:08:07
阅读次数:
141
伸展树是一种平衡二叉树。在伸展树上的一般操作都基于伸展操作:假设想要对一个二叉查找树执行一系列的查找操作,为了使整个查找时间更小,被查频率高的那些条目就应当经常处于靠近树根的位置。于是想到设计一个简单方法, 在每次查找之后对树进行重构,把被查找的条目搬移到离树根近一些的地方。伸展树应运而生。平衡二叉...
分类:
其他好文 时间:
2015-04-13 14:24:08
阅读次数:
127
学习Splay的时候参考了很多不同的资料,然而参考资料太杂的后果就是模板调出来一直都有问题,尤其是最后发现网上找的各种资料均有不同程度的错误。好在啃了几天之后终于算是啃下来了。Splay也算是平衡树的一种,但是跟AVL树、SBT不同的是,Splay并不是一直保持严格的平衡,因此在速度上可能要慢一些,...
分类:
其他好文 时间:
2015-03-12 22:25:26
阅读次数:
238
最近做的一些Splay题及思路
BZOJ 1588
就是求一个数的前驱和后继,用Splay很简单
POJ 3468
很经典的线段树题目,用Splay做练习懒惰标记
HDU 1890
涉及区间翻转,注意直接以数列下标建树,对原数列排序后,直接查找,找到后删除。
HDU 3436
很好的一道题,首先离散化,Splay
树中每个节点表示的是一段区间...
分类:
其他好文 时间:
2015-03-06 22:15:03
阅读次数:
287
这一章要讲的数据结构基本以实用为主。 12.1 自顶而下的伸展树 一些定义 展开:对于树的操作,叶结点X被插入之后,经过旋转使X成为新的树根。 摊还时间:在摊还分析中的一个概念,就是求一个操作的所有情况的平均时间。和O()的时间不同,后者体现的是最糟糕的情况下程序完成所要花费的时间。 P345之中,...
分类:
编程语言 时间:
2015-02-21 15:28:41
阅读次数:
164
在X插入时,展开使得X成为新的根。查找X时,也要对X或者是因为没找到而路径上最后一个节点进行展开。初步想法是沿着根往下进行一次遍历,以及而后从底向上的一次遍历。这样太麻烦了啊。所以本文介绍自顶向下的伸展树:在初始访问路径上就进行一次次的旋转。我们设X为中间树的根,L存放树T中小于X中的节点,但不存放...
分类:
其他好文 时间:
2015-02-17 19:54:01
阅读次数:
177
伸展树是:任意M次对树的操作最多花费O(MlogN)的时间。摊还时间:如果M次操作运行O(MF),那么摊还时间就是O(F)展开:分为三种情况:①X节点的爸爸就是根节点那么旋转一次即可咯②X有爷爷,且为左左左或右右右所谓的zig-zig一字型,那么先对k1-k2转,再对k2-k3转,③X有爷爷,且为之...
分类:
其他好文 时间:
2015-02-16 19:36:45
阅读次数:
210
伸展树的介绍1、出处:http://www.cnblogs.com/skywang12345/p/3604238.html伸展树(Splay Tree)是一种二叉排序树,它能在O(log n)内完成插入、查找和删除操作。它由Daniel Sleator和Robert Tarjan创造。(01) 伸展...
分类:
编程语言 时间:
2015-02-09 15:55:43
阅读次数:
260