splay学习笔记重制版以前写的学习笔记:传送门 但是之前写的比较杂乱,这里重制一下假设我们要维护一个数据结构,支持插入、删除、查询某个值的排名,查询第 k k k大的值等操作。 最直接的想法是用二叉搜索树,也就是左子树权值<根节点权值<右子树权值的数据结构。查询时,如果目标值小于根节点就往左走,否则往右走。 但是二叉搜索树的深度是没法保证的,树高可以达到 O ( n ) O(n) O(n)级别,这样我们的操作都是 O ( n ) O(n) O(n)的。 因此这里我们需要使用平衡树,通过一些操作来维持树的平衡,让单次操作变成 O