Python Data Structure 简明教程
Python - Heaps
堆是一种特殊的树结构,其中每个父节点都小于或等于其子节点。然后将其称为最小堆。如果每个父节点都大于或等于其子节点,则将其称为最大堆。在实现优先级队列时它非常有用,其中赋予具有较高权重的队列项在处理中更高的优先级。
关于堆的详细讨论可在我们的网站上获得这里。如果你不熟悉堆数据结构,请先学习它。在本章中,我们将看到使用 Python 实现堆数据结构。
Create a Heap
通过使用名为 heapq 的 Python 内置库来创建堆。此库具有执行堆数据结构上各种操作的相关函数。以下是这些函数的列表。
-
heapify − 此函数将常规列表转换为堆。在结果堆中,最小的元素会被推送到索引位置 0。但其他数据元素不一定按顺序排列。
-
heappush − 此函数将元素添加到堆中,而不会改变当前的堆。
-
heappop − 此函数从堆中返回最小的数据元素。
-
heapreplace − 此函数用函数中提供的新值替换最小的数据元素。
Creating a Heap
只需使用带堆化函数的元素列表就可以创建堆。以下示例中,我们提供一个元素列表,堆化函数重新排列元素,将最小元素放置在第一位。
Inserting into heap
向堆中插入数据元素时总是将元素添加到最后一个索引位置。但只在该元素的数值最小的情况下,才能再次应用堆化函数以将新添加的元素移动到第一索引位置。以下示例中,我们插入数字 8。