详细讲讲平衡树Splay实现过程

心不动则不痛 提交于 2019-11-26 12:02:39

前言:

作者的splay写法主要受到https://www.luogu.org/blog/tiger0132/slay-notes这篇文章的影响,所以代码实现基本重复,这里主要把那篇文章中没讲清楚的地方详细讲讲


Splay,又称伸展树,是平衡树的一种(蒟蒻我也只会写一种QWQ)

在讲平衡树之前,得先了解什么是二叉查找树

二叉搜索树,又称二叉搜索树,是一种优化查询数字的复杂度的数据结构,他的结点严格满足左结点小于根节点,右结点大于根节点

因此每次查找某个特定值,只要不断将它与当前结点比较大小,选择向左儿子走或者右儿子走,就一定能找到要找到的数字,下图就是一个标准的二叉搜索树:(画图随便画的,很丑QWQ)

上图就是一个优秀的例子,为什么?因为这恰好是一个完全二叉树,也就是说,你查询任何数的复杂度都能稳定在O(log n)级别

但是真的每次都这样吗?:

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

(to be continue)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!