《征服数据结构》Splay 树(二)

科技   2024-11-07 19:00   上海  

摘要:

1,Splay树的伸展

2,Splay树的插入

3,Splay树的删除

4,Splay树的查找

5,查数值的排名



1,Splay树的伸展

前面我们刚讲过《Splay树》,在树伸展的时候我们使用的是自下往上的方式,这种方式比较容易理解,也比较好写,但每个节点需要维护一个parent指针。


今天这里我们使用自上往下的方式来介绍Splay树,为了防止文章过长,和前面《Splay树》重复的知识点就不在介绍,这里只介绍摘要中列出的几项,在文章的最后会贴出完整代码。所以阅读该文章之前最好先看下前面的讲的《Splay树》


Splay树的伸展就是把给定值的节点通过多次旋转,最后到根节点的过程,在前面讲的《Splay树》中需要伸展的节点是必须要存在的,但这里不是必须的,也就是说Splay树中不一定存在该节点。


自上往下的伸展方式步骤如下:

    1,这里需要有三棵树,一个是左边的树,一个是右边的树,还一个是中间的树,刚开始的时候左边和右边的树是新建的一颗空树,中间的树就是Splay树。

    2,在前面我们讲Splay树的时候,伸展会有单旋和双旋等各种情况判断,双旋还要分一字型之字形,但这里的旋转只需要考虑一字型即可。下面我们来看下伸展时候出现的几种情况。

(一)


(二)

(三)

(四)

(五)

数据结构和算法
王一博,《算法秘籍》作者,1000多页的pdf算法题我也已经整理完成,在公众号“数据结构和算法”中回复关键字“pdf”即可下载。
 最新文章