📅  最后修改于: 2023-12-03 14:49:01.051000             🧑  作者: Mango
二叉堆是一种基于完全二叉树的数据结构,是一种特殊的堆。在二叉堆中,根节点的值必须小于或等于子节点的值,因此又被称作最小堆。二叉堆常用数组来表示。
二叉堆的数组表示需要满足以下条件:
数组的第一个元素是根节点,其余元素按照从上到下、从左到右的顺序填充。因此,我们可以通过数组下标来访问节点,可以快速定位节点的位置。
class MinHeap:
def __init__(self, capacity):
self.capacity = capacity
self.size = 0
self.data = [0] * capacity
def left_child(self, index):
return 2 * index + 1
def right_child(self, index):
return 2 * index + 2
def parent(self, index):
if index == 0:
raise ValueError("Heap is empty")
return (index - 1) // 2
# 省略其他方法的实现
二叉堆的数组表示提供了以下常见操作:
这些操作的时间复杂度取决于堆的大小,时间复杂度分别为 O(log n)。
二叉堆的数组表示是一种简单、快速的实现方式,可以很好地支持堆操作。通过掌握数组表示的原理和操作,可以有效地实现二叉堆,并在实际工程中得到应用。