平衡树Splay如何为?
摘要:平衡树(Splay) 前言 个人见解不代表我讲的一定正确,请参考其它文献阅读 (就当我瞎扯淡就行) 前置知识 二叉搜索树 简单叙述一下,具体操作请转至其它博客或oi.wiki 二叉搜索树,也称也称二叉排序树或二叉查找树,是一种基于二叉树
平衡树\(Splay\)
前言
个人见解不代表我讲的一定正确,请参考其它文献阅读
(就当我瞎扯淡就行)
前置知识
二叉搜索树
简单叙述一下,具体操作请转至其它博客或oi.wiki
二叉搜索树,也称也称二叉排序树或二叉查找树,是一种基于二叉树的树形结构,满足该树为二叉树且中序遍历有序的性质
简单解释一下就是:对于每个结点至多有两个子节点,并且左子树内任意一个结点的大小小于结点,右节点内任意一个子节点都大于该结点。同时,二叉搜索树的任意一个子树也是二叉搜索树。
Splay
由上面可知,根据二叉搜索树的性质,在随机数据下,我们可以构造一个期望为\(log(n)\)深度的二叉树,以此达到\(log(n)\)时间复杂度的查询,修改操作,但是如果在特殊数据下,二叉搜索树会退化成一条链,例如插入的数字顺序为有序,则时间复杂度退化为\(O(N)\),二平衡树都是基于二叉搜索树进行修改,以达到一种平衡使得树高尽可能小
\(Splay\)树的核心思想是利用旋转操作让常使用结点上移并且降低树高,降低时间复杂度。
我先会给出具体的操作流程然后简单说明原理。
