概念与基本性质
左偏树(Leftist Tree)是一种可并堆的实现,是具有左偏性质的堆有序二叉树
可并堆(Mergeable Heap)是一种抽象数据类型,它除了支持优先队列的三个基本操作(Insert, Minimum,Delete-Min),还支持一个额外的操作——合并操作。
左偏性质是为了使我们可以以更小的代价在优先队列的其它两个基本操作(插入节点、删除最小节点)进行后维持堆性质。
左偏树是一棵二叉树,它的节点除了和二叉树的节点一样具有左右子树指针(left, right)外,还有两个属性,键值(key)和距离(dist)
节点的键值小于或等于它的左右子节点的键值(小根)
节点的左子节点的距离不小于右子节点的距离(左偏性质)
节点的距离等于它的右子节点的距离加1
执行操作
- 合并 - merge
- 查询堆最小值 - find
- 删除(并于查询) - erase
代码
1 |
|