首页 > 其他分享 >[学习笔记] Splay & Treap 平衡树 - 数据结构

[学习笔记] Splay & Treap 平衡树 - 数据结构

时间:2024-08-29 09:48:00浏览次数:7  
标签:log 二叉 Splay Treap 平衡 数据结构

[学习笔记] Splay & Treap 平衡树 - 数据结构

Splay 树

又名伸展树,一种平衡二叉查找树,通过 \(\text{Splay}\) 操作不断把节点旋到根节点来维护整颗树的平衡。

说人话,很玄学的玩意,复杂度是单 log 级别的。为啥是单 log,科学的解释请移步 OI-WIKI。不科学的解释就是,通过不断 \(\text{Splay}\),以至于整棵树不会变成一条链,再加上二叉搜索树的看家本领,有点类似于二分查找,于是复杂度就变成 \(\mathcal{O}(n\log n)\) 了。

说一说它的一些操作。从它最重要的操作开始。

Splay 操作

单次 splay 的本质就是,把某个节点与它父亲的关系调换一下。因为这是个二叉查找树,所以这种操作很方便:看图:

imageimage

如果

标签:log,二叉,Splay,Treap,平衡,数据结构
From: https://www.cnblogs.com/xiaolemc/p/18383678

相关文章

  • 25版王道数据结构课后习题详细分析 第五章 树与二叉树 5.4 树、森林
    一、单项选择题————————————————————————————————————————解析:正确答案:D————————————————————————————————————————解析:森林与二叉树具有对应关系,因此,我们存储森林时应先将森林转换......
  • 【Test 002】 高阶数据结构 二叉搜索树 必会知识点!
    文章目录1.二叉搜索树的概念2.二叉搜索树K模型的代码实现2.1Find()查找的实现2.2Insert()插入的实现2.3InOrder()中序遍历的实现2.4Erase()删除的实现3.二叉搜索树的KV模型4.二叉搜索树的性能分析1.二叉搜索树的概念......
  • 数据结构——单向链表
    链表1.空间可以不连续(理论上长度是无限的)2.访问元素不方便3.链表需要更大的空间存放数据和节点地址4.链表的插入和删除效率很高O(1)单向链表无头单向链表,节点插入在头的话,每次头结点都会变,所以有了有头链表,头结点的pNext总是指向链表的第一个节点1.创建空链表//创建空......
  • 【数据结构与算法第二章(理论知识)】绪论:数据结构的定义、算法的基本概念和算法效率分析
     目录【数据结构与算法第二章(理论知识)】绪论1.1数据结构的定义1.2算法的基本概念1.3算法效率分析1.3.1时间复杂度1.3.2空间复杂度【数据结构与算法第二章(理论知识)】绪论1.1数据结构的定义    数据结构没有一个统一的官方定义,以下是一些经典书籍对数据......
  • 算法与数据结构——哈希算法
    哈希算法前面介绍了哈希表的工作原理和哈希冲突的处理方法。然而无论是开放寻址还是链式地址,它们只能保证可以在发生冲突时正常工作,而无法减少哈希冲突的发生。如果哈希冲突过于频繁,哈希表的性能则会急剧劣化。如下图所示,对于链式哈希表,理想情况下键值对均匀分布在各个桶中,达到......
  • Python基本数据结构
    本篇是Python系列教程第8篇,更多内容敬请访问我的Python合集Python提供了几种内置的数据结构,这些数据结构可以帮助我们有效地组织和管理数据。下面是一些基本的数据结构及其介绍和示例:1列表(list)列表是一种有序的、可变的数据结构,可以包含任何类型的项。特点:有......
  • Redis几种常用数据类型的数据结构
    以下是redis-7版本以下适用stringint编码:当字符串长度小于等于12字节并且字符串可以表示为整数时,Redis会使用int编码。这样可以节省内存,并且在执行一些命令时可以直接进行数值计算。embstr编码:当字符串长度小于等于39字节时,Redis会使用embstr编码。这种编码方式会将......
  • 数据结构之链表
    C++中常见的数据结构-CSDN博客目录一、链表的定义二、链表的创建三、链表的遍历四、链表的插入五、链表的删除六、总结 链表是计算机科学中常见的一种数据结构,c/c++语言中也有着丰富的链表操作函数库。本文将从链表的定义、创建、遍历、插入、删除等多个方面进行详细......
  • 数据结构学习第一周
    本文需要掌握的知识1.认识数据结构2.了解数据结构(逻辑结构)的分类3.内存储器模型以及分配方式(物理结构)4.认识Node类5.简单了解泛型1.数据结构(D-S/DataStructure)1.1简介1.1.1数据分为原子数据和复合数据1.1.2结构分为逻辑结构和物理结构数据结构是由数据和数据......
  • 【数据结构】【模板】李超线段树
    李超线段树定义可以看看洛谷的模板题目:作用优化动态规划,如果可以将一个动态规划的转移式子转化为\(y=kx+b\)的形式,那么我们可以边转移边将\(y=kx+b\)这条线段放入李超线段树,然后在下次转移时,直接调用下次计算出来的\(x\)位置上的最大值或最小值。(结合题目理解......