The implicit representation of a complete binary tree as an array, or list, seems to have been first proposed by Eytzinger [22], as a representation for pedigree family trees. The BinaryHeap data structure described here was first introduced by Williams [65].
The randomized MeldableHeap data structure described here appears to have first been proposed by Gambin and Malinowski [29]. Other meldable heap implementations exist, including leftist heaps [12,41, Section 5.3.2], binomial heaps [62], Fibonacci heaps [27], pairing heaps [26], and skew heaps [61], although none of these are as simple as the MeldableHeap structure.
Some of the above structures also support a
operation
in which the value stored at node
is decreased to
. (It is a
pre-condition that
.) This operation can be implemented
in
time in most of the above structures by removing node
and adding
. However, some of these structures can implement
more efficiently. In particular,
takes
amortized time in Fibonacci heaps and
amortized time in a special version of pairing heaps [20].
This more efficient
operation has applications in
speeding up several graph algorithms including Dijkstra's shortest path
algorithm [27].
opendatastructures.org