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
data
structure described here was first introduced by Williams [63].
The randomized
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 [60], Fibonacci
heaps [27], pairing heaps [26], and skew heaps
[59], although none of these are as simple as the
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