前言:
作者的splay写法主要受到https://www.luogu.org/blog/tiger0132/slay-notes这篇文章的影响,所以代码实现基本重复,这里主要把那篇文章中没讲清楚的地方详细讲讲
Splay,又称伸展树,是平衡树的一种(蒟蒻我也只会写一种QWQ)
在讲平衡树之前,得先了解什么是二叉查找树
二叉搜索树,又称二叉搜索树,是一种优化查询数字的复杂度的数据结构,他的结点严格满足左结点小于根节点,右结点大于根节点
因此每次查找某个特定值,只要不断将它与当前结点比较大小,选择向左儿子走或者右儿子走,就一定能找到要找到的数字,下图就是一个标准的二叉搜索树:
(画图随便画的,很丑QWQ)
上图就是一个优秀的例子,为什么?因为这恰好是一个完全二叉树,也就是说,你查询任何数的复杂度都能稳定在O(log n)级别
但是真的每次都这样吗?:

上图的这颗搜索树就由于插入顺序的原因退化成了一条链,最差情况下查询一个数字居然达到了 O(n)的级别,这显然不是我们能接受的
(to be continue)