最大堆和最小堆

最大堆和最小堆是二叉堆的两种形式。
最大堆:根结点的键值是所有堆结点键值中最大者,且每个结点的值都比其孩子的值大。
最小堆:根结点的键值是所有堆结点键值中最小者,且每个结点的值都比其孩子的值小。
最大堆和最小堆_第1张图片
最大堆和最小堆_第2张图片

最小堆和最大堆的增删改相似,其实就是把算法中的大于改为小于,把小于改为大于。
生成最大堆:最大堆通常都是一棵完全二叉树,因此我们使用数组的形式来存储最大堆的值,从1号单元开始存储,因此父结点跟子结点的关系就是两倍的关系。
即:heap[father * 2] = heap[leftChild]; heap[father * 2 + 1] = heap[rightChild];

你可能感兴趣的:(最大堆和最小堆)