天天看点

优先队列

二叉堆(binary heap),它的使用对于优先队列的实现是如此普遍,以至于,当堆(heap)这个词不加修饰地使用时一般都是指该数据结构的这种实现。

二叉堆有两个性质,即结构性和堆序性。对堆的一次操作可能破坏这两个性质中的一个。

二叉堆是一棵被完全填满的二叉堆,有可能例外的是在低层,低层上的元素从左到右填入。这样的树称为完全二叉树(complete binary tree)。完全二叉树的高为logn向下取整。可以用数组表示完全二叉树。

堆的最小元在根上,任意子树也是一个堆。

比较下面两个deletemin函数,第一个是我自己写的,第二个是书上的:

从节点i下滤:

buildheap的简要代码:

继续阅读