Splay Trees 学习笔记

article/2025/11/9 15:52:16

Splay Trees 学习笔记

Splays Trees 也是一种二叉搜索树,用于提高连续搜索的效率。Splay Trees 通过将被访问到的节点放于根,提升访问速度。
它与AVL Trees 的效果有所区别。AVL树通过使树balanced降低树的高度至logN,从而使得单次搜索的复杂度为O(logN)。而Splay Trees则通过每次将被访问到的节点置于根,使得m次连续搜索的复杂度为O(mlogN)。
下面我们将介绍Splay Trees的实现及PTA中的相关题目。m次连续搜索复杂度为O(mlogN)我们在摊还分析博文中进行证明。


实现

根据不同的情况,Splay Trees采取不同的调整方法,直到被访问的节点置于根节点。
我们记被访问的节点为X,其父节点为P,其祖父节点为G。
首先我们将情况分为P是根节点和不是根节点。

P是根节点

交换P与X。结束调整。

P不是根节点

在该情况下,分为zig-zig情况和zig-zag情况。根据不同情况采取不同的旋转方法,旋转结束后,继续调整,直到被访问的节点处于根节点。

Zig-Zig

zig-zig

X, P, G处于同一方向时,只需旋转一次,将X, P, G颠倒即可。

Zig-Zag

Zig-Zag

X, P, G处于不同方向时,需要旋转两次,先旋转P, X,再旋转X, G

删除

在删除一个节点时,按如下步骤操作:

  1. 找到并删除该节点
  2. 访问该节点子树中最大的节点(此时该最大节点会处于该子树的根,且没有right child)
  3. 使删除节点的右子树成为 左子树最大节点 的right child

题目

For the result of accessing the keys 3, 9, 1, 5 in order in the splay tree in the following figure, which one of the following statements is FALSE? (1分)
题目配图
A. 5 is the root
B. 1 and 9 are siblings
C. 6 and 10 are siblings
D. 3 is the parent of 4

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

答案是D


http://chatgpt.dhexx.cn/article/PUR9PoQj.shtml

相关文章

Splay入门讲解

先安利一发,Splay入门解析【保证让你看不懂(滑稽)】 我就是看这个看懂的,这博客非常适合像我这种连平衡树都不知道是啥的蒟蒻。 另外,讲得不好还请见谅。 首先我们来看看平衡树是啥 平衡树首先是棵二叉搜索树&#xf…

史上第二详尽的平衡树(Splay)详解

谢鸣:本文来自zyf2000学姐的blog,原题为“史上最详尽的平衡树(splay)讲解与模板”,我在这里拿过来使用,命名为“史上第二详尽的平衡树(Splay)详解”,并加上了一些新的操作. 变量声明&#xff1…

splay复习小记

简介 splay的原名是伸展树,一种超级实用的数据结构,能快速地干很多数据结构不能干的事情。 很久以前就听说过并且略微地学了一些,但是当时了解地并不是很多。 有些人把splay达成spaly叫做死吧你,(⊙﹏⊙)b 结构 实质上他是一个…

Splay学习笔记

昨天这个时候到现在终于把Splay给搞明白了,还A了一道郁闷的出纳员;刚学完的感受:我再也不碰这东西了;做完郁闷的出纳员的感受:我发誓这辈子不当出纳员(虽然这确实只是个入门题……) 于是来讲一讲这个恶心的东西吧………

[Splay伸展树]splay树入门级教程

首先声明,本教程的对象是完全没有接触过splay的OIer,大牛请右上角。。 PS:若代码有误,请尽快与本人联系,我会尽快改正 首先引入一下splay的概念,他的中文名是伸展树,意思差不多就是可以随意翻转的二叉树 PS:百度百科中伸展树读作:BoGang,不知道是不是因为和某位大牛…

Splay Tree(伸展树)

二叉查找树(Binary Search Tree)能够支持多种动态集合操作。因此,在信息学竞赛中,二叉排序树起着非常重要的作用,它可以被用来表示有序集合、建立索引或优先队列等。 作用于二叉查找树上的基本操作的时间是与树的高度…

浅谈splay

例题: 给出一个长度为n序列a。 有m次操作,每次操作可以修改a[i],在第i个数前插入一个数x,或查询区间[l,r]的最大值。 1≤n≤100000,1≤m≤100000。 强制在线 看到这道题最自然的反应就是用线段树,但有了插入操作线段树…

关于splay的一些说明

前言splay出现的背景它的操作 push_uprotatesplayfindinsertnextdeletefindkthmain 前言 暑假快过完了,大家感觉是不是很棒!gay房也体验过最新的断电模拟器了. 好吧,在开讲之前我还是得说一个.刀剑神域的外传实在太好看了! 除了精彩的战斗场面,神一般的人设和强大的剧情,比…

Splay入门详解

Splay入门详解 写在前面 听说平衡树是一种强大的数据结构,听同年级或高年级大佬们讲起来也感觉很牛笔的亚子,而最近XC又叫我们去学习一下 L C T LCT LCT!? 又因为 S p l a y Splay Splay是学习 L C T LCT LCT的基础,…

【学习笔记】Splay

普通平衡树 模板题链接 1、引入 一种二叉树&#xff0c;这棵树满足任意一个节点&#xff0c;它的左儿子的权值<自己的权值<右儿子的权值 这种树叫做二叉查找树&#xff0c;这个概念应该在初赛中见过了吧 Splay就是利用这个结构来实现的 2、变量 模板题的7大变量 s…

平衡树详解(Splay)

引入 先看例题&#xff1a;&#xff08;洛谷 P3369 【模板】普通平衡树&#xff09; 您需要写一种数据结构&#xff0c;来维护一些数&#xff0c;其中需要提供以下操作&#xff1a; 1.插入 x x x 数 2.删除 x x x 数(若有多个相同的数&#xff0c;因只删除一个) 3.查询 x x…

Splay入门解析【保证让你看不懂(滑稽)】

upd&#xff1a;忽然发现直接在百度上搜索 splay s p l a y 就会搜索到我这篇文章&#xff1f;小蒟蒻瑟瑟发抖。 因为CSDN这边我基本不会看回复什么的&#xff0c;所以如果有问题还是请移步cnblogs里面吧 Cnblogs里面这篇文章的链接 BST真是神奇的东西。。。 而且种类好多呀…

Splay Tree

类别&#xff1a;二叉排序树 空间效率&#xff1a;O(n) 时间效率&#xff1a;O(log n)内完成插入、查找、删除操作 创造者&#xff1a;Daniel Sleator和Robert Tarjan 优点&#xff1a;每次查询会调整树的结构&#xff0c;使被查询频率高的条目更靠近树根。 注&#xff1a;所有…

【算法详解】splay的初步了解

qwq表示最近感受到了不停课的鸭梨啊&#xff0c;好难搞啊……算法太难学了……我好菜啊qwq 其实半个多月前就可以写这篇文章&#xff0c;不过由于时间紧张没写emmmmmm&#xff0c;不扯闲言乱语了&#xff0c;如果有什么写的不好的地方凑活一下吧2333333333 splay是一种可以使树…

splay详解

一&#xff1a;什么是splay&#xff08;伸展树&#xff09; 首先了解二叉排序树 二叉排序树或者是一棵空树&#xff0c;或者是具有下列性质的 二叉树&#xff1a; &#xff08;1&#xff09;若左子树不空&#xff0c;则左子树上所有结点的值均小于或等于它的 根结点的值&#…

Splay 总结基础精华

前言&#xff1a; 第一次学习Splay是2月份&#xff0c;打板子的时候是3月份&#xff0c;Ac是4月份&#xff0c;写这篇博客是6月初&#xff1b;原因是因为我竟然发现我忘了Splay的板子了&#xff01;很慌&#xff0c;必须总结一下&#xff01; 不敢说是最详细的&#xff0c;但希…

关系型数据库与非关系型数据库详解

关系数据库与非关系型数据库 一、数据库概述1、关系型数据库2、非关系型数据库 二、数据库区别1、数据存储方式不同2、扩展方式不同3、对事务性的支持不同 三、非关系型数据库产生背景四、Redis简介1、Redis 优点 五、Redis 安装部署六、Redis 命令工具&#xff08;1&#xff0…

关系型数据库RDS基本简介

OSS存放非结构化的数据&#xff0c;如&#xff1a;音频、视频、图片 rds存放结构化的数据&#xff0c;如&#xff1a;一张表&#xff0c; RDS产品概要 可以根据业务的需求进行弹性伸缩。 采用主从备份架构&#xff0c;三节点数据存储&#xff0c;具备高可用性和数据可靠性 …

2 关系型数据库是什么?

目录结构 关系型数据库基本概念结构化查询语言数据定义语言&#xff08;DDL&#xff09;数据查询语言&#xff08;Data Query Language, DQL&#xff09;数据操纵语言&#xff08;Data Manipulation Language, DML&#xff09;数据控制语言&#xff08;Data Control Language, …

常见的关系型数据库有哪些

Oracle Database&#xff1a;由Oracle公司开发和维护的商业关系型数据库&#xff0c;具有广泛的应用场景和功能。 MySQL&#xff1a;开源关系型数据库&#xff0c;常用于Web应用程序和小型企业应用。 Microsoft SQL Server&#xff1a;由Microsoft公司开发和维护的商业关系型…