我是编程新手,我想学习什么是最小堆以及如何使用buildHeap
方法和insert
方法查找给定数组的最小堆
答案 0 :(得分:0)
要学习Min Heap,您必须首先了解Binary Heap是什么。
二进制堆是具有以下属性的二进制树。
1)这是一棵完整的树(除了最后一个级别,所有级别都已完全填充,并且最后一个级别的所有键都尽可能保留)。二进制堆的此属性使它们适合存储在数组中。
2)二进制堆是“最小堆”或“最大堆”。在最小二进制堆中,在二进制堆中存在的所有密钥中,根密钥必须最小。对于二叉树中的所有节点,相同的属性必须递归地为true。
要将元素“ K”插入最小堆:
void MinHeap::insertKey(int k)
{
if (heap_size == capacity)
{
cout << "\nOverflow\n";
return;
}
heap_size++;
int i = heap_size - 1;
harr[i] = k;
while (i != 0 && harr[parent(i)] > harr[i])
{
swap(&harr[i], &harr[parent(i)]);
i = parent(i);
}
}
我不知道任何buildheap
或insert
函数,但是出于同一目的,c ++ stl具有make_heap()
和push_heap()
函数。
Heap c++ implementation