笔者一个数据结构的蒟蒻还是奇迹般的搞明白了splay的基本原理以及实现方法,所以写下这篇随笔希望能帮到像我当初一脸懵逼的人。 我们从二叉查找树开始说起: 二叉查找树是一棵二叉树,它满足这样一个性质:所有小于当前节点的点都在该节点的左子树上,所有大于当前节点的点都在该节点的右子树 ...
Splay入门 目录 Splay入门 BST与Splay Rotate Splay 查找操作 插入 Update 前驱 后驱 前驱 后驱 删除 第k大 参考 BST与Splay 二叉查找树 BST ,保证任意节点的左儿子小于其父亲,任意节点的右儿子大于其父亲的二叉树。但是当出现毒瘤数据时,BST会退化为链,从而影响效率。而Splay是其中的一种比较万能的填坑方法。 Rotate Splay基本旋转 ...
2018-11-24 12:06 8 4537 推荐指数:
笔者一个数据结构的蒟蒻还是奇迹般的搞明白了splay的基本原理以及实现方法,所以写下这篇随笔希望能帮到像我当初一脸懵逼的人。 我们从二叉查找树开始说起: 二叉查找树是一棵二叉树,它满足这样一个性质:所有小于当前节点的点都在该节点的左子树上,所有大于当前节点的点都在该节点的右子树 ...
基本概念 \(Splay\) 是一种 平衡树 ,由 \(Daniel \ Sleator\) 和 \(Robert \ Tarjan\) 提出。它可以维护普通的二叉搜索树所支持的操作,也可以作为 \(LCT\) 的辅助树,进行很多复杂的操作。\(Splay\) 是两种最常用的平衡树 ...
来自两年后的提示 本篇文章只是娱乐向的介绍性文章,可以进行初步理解。 \(\text{Splay}\)如果需要严格的证明均摊复杂度参考势能分析。 另外\(\text{Splay}\)依靠\(rotate\)来维护\(size\)等节点维护的值。 如果代码中没有体现请不要忘记上面这句话。 另外本文 ...
前言 在上一节中,我们讲述了Splay的核心操作rotate与splay 本节我会教大家如何用这两个函数实现各种强大的功能 为了方便讲解,我们拿这道题做例题来慢慢分析 利用splay实现各种功能 首先,我们需要定义一些东西 各种指针 rotate splay 这两个函数就不 ...
平衡树实际很简单的 以下讲解都以Luogu P3369 【模板】普通平衡树为例 我不会带指针的Splay,所以我就写非指针型的Splay Splay是基于二叉查找树(bst)实现的 什么是二叉查找树呢?就是一棵树呗,但是这棵树满足性质:一个节点的左孩子一定比它小,右孩子一定比它 ...
Splay (也许不)详解 前言 在我之前的博文中,已经介绍了平衡树的一种实现方式:树堆(Treap),今天再来介绍一种功能更强大,实现更方便,常数更大的平衡树——伸展树(Splay)。如果您还不知道平衡树是甚么,请移步这里。 背景介绍 伸展树 (Splay Tree),也叫分裂树,是一种 ...
前言 Spaly是基于二叉查找树实现的, 什么是二叉查找树呢?就是一棵树呗:joy: ,但是这棵树满足性质—一个节点的左孩子一定比它小,右孩子一定比它大 比如说 这就是一棵最基本二叉查找树 ...
很多年前学的splay已经忘了? BZOJ 3729 要用Splay啊哭。。强制在线。。 二叉查找树 二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree),亦称二叉搜索树。 二叉排序树或者是一棵空树,或者是 ...