成对堆的变体
成对堆可以是空堆,或者是由根元素和一个可能为空的成对树清单组成的成对树。
堆排序属性需要任何节点的父节点都不大于该节点本身。
以下说明考虑了一个纯粹的功能性堆,它不支持 decrease-key 操作。
type PairingTree[Element] = Heap(element: Element, subheaps: List[PairingTree[Element]])
type PairingHeap[Element] = Empty | PairingTree[Element]
成对堆有两种形式——最小成对堆和最大成对堆。当我们要表示最小优先级队列时,会实现最小成对堆,而当要实现最大优先级队列时,会实现最大成对堆。根据我们在文本中对堆和左斜树的讨论,我们在这里明确讨论最大成对堆。最小成对堆可以类比。
最大成对堆被定义为一个最大树。
下面显示了四个最大成对堆。请注意,成对堆不需要是二叉树。

广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP