摘要:
1,Splay树的伸展
2,Splay树的插入
3,Splay树的删除
4,Splay树的查找
5,查数值的排名
1,Splay树的伸展
前面我们刚讲过《Splay树》,在树伸展的时候我们使用的是自下往上的方式,这种方式比较容易理解,也比较好写,但每个节点需要维护一个parent指针。
今天这里我们使用自上往下的方式来介绍Splay树,为了防止文章过长,和前面《Splay树》重复的知识点就不在介绍,这里只介绍摘要中列出的几项,在文章的最后会贴出完整代码。所以阅读该文章之前最好先看下前面的讲的《Splay树》。
Splay树的伸展就是把给定值的节点通过多次旋转,最后到根节点的过程,在前面讲的《Splay树》中需要伸展的节点是必须要存在的,但这里不是必须的,也就是说Splay树中不一定存在该节点。
自上往下的伸展方式步骤如下:
1,这里需要有三棵树,一个是左边的树,一个是右边的树,还一个是中间的树,刚开始的时候左边和右边的树是新建的一颗空树,中间的树就是Splay树。
2,在前面我们讲Splay树的时候,伸展会有单旋和双旋等各种情况判断,双旋还要分一字型和之字形,但这里的旋转只需要考虑一字型即可。下面我们来看下伸展时候出现的几种情况。
(一)
(二)
(三)
(四)
(五)