Splay树
Splay树,即二叉伸展树,是一种非严格平衡的二叉搜索树,由丹尼尔·斯立特Daniel Sleator 和 罗伯特·恩卓·塔扬Robert Endre Tarjan 在1985年发明(摘自百度百科)。相比与AVL、红黑树而言,Splay树不需要额外地存储平衡信息,因此显得更为简洁,代码实现也较为简单(指150行代码),同时具有很强的扩展性,常用于算法竞赛中。
至于我为什么突然想要学Splay树,因为这是Tarjan发明的……没错,就是求强连通分量、割点、桥的Tarjan算法的那个Tarjan。事情的起因是我最近刚学完强连通分量,然后查了一下Tarjan的资料,发现原来是祖师爷级别的大佬,拿过图灵奖,发明了很多图论的重要算法和数据结构。于是就对Splay树产生了兴趣,虽然这玩意已经明显超过了我的算法水平(刚学完强连通的蒟蒻),但我还是自不量力毅然决然地花了两天手搓了Splay,然后又花了一天的时间调试。
那么废话了那么多,接下来正式介绍Splay树
(以下内容和代码部分抄袭参考自oiwiki和其他人的博客、文章等)
(图片均使用开源网站ioDraw绘制,感谢开源者的贡献)
基本成员
S ...