2024年4月12日发(作者:)

IOI2005国家集训队论文 黄源河

左偏树的特点及其应用

广东省中山市第一中学 黄源河

【摘要】

本文较详细地介绍了左偏树的特点以及它的各种操作。

第一部分提出可并堆的概念,指出二叉堆的不足,并引出左偏树。第二部分

主要介绍了左偏树的定义和性质。第三部分详细地介绍了左偏树的各种操作,并

给出时间复杂度分析。第四部分通过一道例题,说明左偏树在当今信息学竞赛中

的应用。第五部分对各种可并堆作了一番比较。最后总结出左偏树的特点以及应

用前景。

【关键字】

左偏树 可并堆 优先队列

【目录】

一、引言 ................................................................................................................................... 2

二、左偏树的定义和性质 ....................................................................................................... 2

2.1 优先队列,可并堆 .................................................................................................... 2

2.1.1 优先队列的定义 ............................................................................................. 2

2.1.2 可并堆的定义 ................................................................................................. 2

2.2 左偏树的定义 ............................................................................................................ 3

2.3 左偏树的性质 ............................................................................................................ 4

三、左偏树的操作 ................................................................................................................... 5

3.1 左偏树的合并 ............................................................................................................ 5

3.2 插入新节点 ................................................................................................................ 7

3.3 删除最小节点 ............................................................................................................ 8

3.4 左偏树的构建 ............................................................................................................ 8

3.5 删除任意已知节点 .................................................................................................... 9

3.6 小结 .......................................................................................................................... 12

四、左偏树的应用 ................................................................................................................. 13

4.1 例——数字序列(Baltic 2004) ........................................................................... 13

五、左偏树与各种可并堆的比较 ......................................................................................... 15

5.1 左偏树的变种——斜堆 .......................................................................................... 15

5.2 左偏树与二叉堆的比较 .......................................................................................... 16

5.3 左偏树与其他可并堆的比较 .................................................................................. 16

六、总结 ................................................................................................................................. 18

第 1 页 共 21 页

IOI2005国家集训队论文 黄源河

【正文】

一、引言

优先队列在信息学竞赛中十分常见,在统计问题、最值问题、模拟问题和贪

心问题等等类型的题目中,优先队列都有着广泛的应用。二叉堆是一种常用的优

先队列,它编程简单,效率高,但如果问题需要对两个优先队列进行合并,二叉

堆的效率就无法令人满意了。本文介绍的左偏树,可以很好地解决这类问题。

二、左偏树的定义和性质

在介绍左偏树之前,我们先来明确一下优先队列和可并堆的概念。

2.1 优先队列,可并堆

2.1.1 优先队列的定义

优先队列(Priority Queue)是一种抽象数据类型(ADT),它是一种容器,里面

有一些元素,这些元素也称为队列中的节点(node)。优先队列的节点至少要包含

一种性质:有序性,也就是说任意两个节点可以比较大小。为了具体起见我们假

设这些节点中都包含一个键值(key),节点的大小通过比较它们的键值而定。优

先队列有三个基本的操作:插入节点(Insert),取得最小节点(Minimum) 和删除

最小节点(Delete-Min)。

2.1.2 可并堆的定义

可并堆(Mergeable Heap)也是一种抽象数据类型,它除了支持优先队列的三

个基本操作(Insert, Minimum, Delete-Min),还支持一个额外的操作——合并操作:

H ← Merge(H

1

,H

2

)

Merge( ) 构造并返回一个包含H

1

和H

2

所有元素的新堆H。

前面已经说过,如果我们不需要合并操作,则二叉堆是理想的选择。可惜合

并二叉堆的时间复杂度为O(n),用它来实现可并堆,则合并操作必然成为算法

的瓶颈。左偏树(Leftist Tree)、二项堆(Binomial Heap) 和Fibonacci堆(Fibonacci

Heap) 都是十分优秀的可并堆。本文讨论的是左偏树,在后面我们将看到各种可

并堆的比较。

第 2 页 共 21 页