堆(Heap)是一种特别的树。要想成为树需要满足以下条件:给定堆中任意节点A和B,若A是B的父节点,那么A的值会小于等于(或大于等于)B的值。这也就衍生最小堆和最大堆了即:若父节点的值恒小于等于子节点的值,这个堆就称为最小堆(min heap);反之,父节点的值恒大于等于子节点的值,则称为最大堆(max heap)。在堆中,最顶端的那个点也就是根节点(root node),他的值要么最大,要么最小,其不会有父节点了(parent node)。
用途:
构建优先队列(Priority Queue)堆排序快速找出一个集合中的最(大/小)值
堆总是一棵完全树,即:其在构建的过程中总是从上到下,从左至右进行构建,在最底层可能数据没有填满,但是数据的填充也是从左至右填入的。
补充:在python中我们可以以以下方式导入使用:
import heapq as hp
pqueue = []
hp.heappush(pqueue, 1)
hp.heappush(pqueue, 5)
hp.heappush(pqueue, 3)
print(pqueue) # [1, 5, 3]
while pqueue:
print(hp.heappop(pqueue), end="t")
# 1 3 5
当然,Python自带sort相关函数,使用他也是不错的。



