二叉堆与优先队列 python
时间: 2023-11-04 20:54:25 浏览: 165
优先队列之二叉堆、d叉堆、左式堆、斜堆、二项堆
3星 · 编辑精心推荐
二叉堆是一种特殊的二叉树数据结构,它满足以下两个性质:
1. 完全二叉树:除了最后一层外,其它各层的节点数都达到最大值,最后一层的节点都集中在左边。
2. 堆序性质:对于每个节点X,它的父节点的值小于等于X节点的值(最小堆),或者大于等于X节点的值(最大堆)。
优先队列是一种抽象数据类型,它类似于队列,不同之处在于每个元素都有一个关联的优先级。优先队列中的元素按照优先级进行排序,高优先级的元素先出队。
在Python中,可以使用 heapq 模块来实现二叉堆和优先队列。下面是一个示例代码:
```python
import heapq
# 创建一个空的列表作为堆
heap = []
# 向堆中插入元素
heapq.heappush(heap, 5)
heapq.heappush(heap, 2)
heapq.heappush(heap, 7)
# 从堆中弹出最小元素
min_element = heapq.heappop(heap)
print(min_element) # 输出: 2
# 获取堆中的最小元素但不弹出
min_element = heap[0]
print(min_element) # 输出: 5
```
阅读全文