BinaryHeap:二叉堆。
堆有两个性质,即结构性和对序性。堆是一颗被完全填满的二叉树,有可能的例外是在底层,底层上的元素从左到右填入,这样的树被称为完全二叉树。
因为完全二叉树的规律,所有它可以用一个数组表示。对于数组中任一位置i上的元素,其左儿子在位置2i上,右儿子在左儿子后的单元(2i+1)中,它的父亲则在位置ceil(i/2);因此堆结构将由一个(Comparable对象的)数组和一个代表当前堆的大小的整数组成。
堆序性质:在一个堆中,对于每一个节点X,X的父亲中的关键字小于(或等于)X中的关键字,根节点除外(它没有父亲)。