public final class BinaryHeap<K,V> extends AbstractHeap<K,V>
BinaryHeap is an implementation of a binary heap.
The implementation in CLR is followed, except the comparisons
are reversed to keep the minimum element on the top of
the heap. In addition, the function names downheap(int)
(for what CLR calls 'heapify') and upheap(int) (which
is part of the INSERT operation) have been adopted from
Sedgewick's book.Heap| Constructor and Description |
|---|
BinaryHeap()
Creates a new, empty
BinaryHeap, which will
use the keys' natural order. |
BinaryHeap(java.util.Collection<? extends java.util.Map.Entry<? extends K,? extends V>> collection,
java.util.Comparator<K> comparator)
Builds a binary heap from a collection of
Map.Entrys
and a key comparator. |
BinaryHeap(java.util.Comparator<K> c)
Creates a new, empty
BinaryHeap with the
specified comparator. |
BinaryHeap(Heap<K,? extends V> h)
Builds a binary heap from the given heap, using
the same key comparator as the given heap.
|
| Modifier and Type | Method and Description |
|---|---|
void |
clear()
Removes all entries from this
Heap. |
void |
decreaseKey(java.util.Map.Entry<K,V> me,
K newkey)
Replace the key in the specified map entry with the specified
smaller key.
|
void |
delete(java.util.Map.Entry<K,V> me)
Remove the specified map entry from the mapping.
|
java.util.Collection<java.util.Map.Entry<K,V>> |
entries()
Returns a collection view of all the
Map.Entrys
in this Heap. |
java.util.Map.Entry<K,V> |
extractMinimum()
Remove and return a map entry with minimal key.
|
java.util.Map.Entry<K,V> |
insert(K key,
V value)
Inserts a node with the specified key and value into the
Heap. |
static void |
main(java.lang.String[] args)
Self-test function.
|
java.util.Map.Entry<K,V> |
minimum()
Returns a mapping entry with minimal key.
|
protected K |
setKey(java.util.Map.Entry<K,V> me,
K newkey)
This method should set the key for the specified
Map.Entry to the given newkey. |
int |
size()
Returns the number of entries in this
Heap. |
void |
union(Heap<? extends K,? extends V> h)
|
void |
updateKey(java.util.Map.Entry<K,V> me,
K newkey)
Replace the key in the specified map entry with the specified key,
which may be either larger or smaller than its current key.
|
comparator, entryComparator, equals, hashCode, insert, isEmpty, keyComparator, toStringpublic BinaryHeap()
BinaryHeap, which will
use the keys' natural order.public BinaryHeap(java.util.Comparator<K> c)
BinaryHeap with the
specified comparator.public BinaryHeap(Heap<K,? extends V> h)
public java.util.Map.Entry<K,V> insert(K key, V value)
HeapHeap. Returns the generated Map.Entry
which may be stored and eventually passed back to
decreaseKey() or delete to remove
this node.public java.util.Map.Entry<K,V> minimum()
Heappublic java.util.Map.Entry<K,V> extractMinimum()
HeapextractMinimum in interface Heap<K,V>extractMinimum in class AbstractHeap<K,V>public void union(Heap<? extends K,? extends V> h)
HeapHeap
into this Heap. Note that duplicates are
permitted. After calling union(), the Heap
passed in as an argument will be empty.
Note that usually efficient implementations of this method require
that the Heap argument be from the same implementation
as this. (That is, they must both be binomial heaps, or
both fibonacci heaps, etc.)
public void decreaseKey(java.util.Map.Entry<K,V> me, K newkey)
HeapdecreaseKey in interface Heap<K,V>decreaseKey in class AbstractHeap<K,V>public void updateKey(java.util.Map.Entry<K,V> me, K newkey)
Heappublic void delete(java.util.Map.Entry<K,V> me)
Heappublic void clear()
HeapHeap.public int size()
HeapHeap.public java.util.Collection<java.util.Map.Entry<K,V>> entries()
HeapMap.Entrys
in this Heap.protected final K setKey(java.util.Map.Entry<K,V> me, K newkey)
AbstractHeapMap.Entry to the given newkey.
Implementation is optional, but it is required if you use the
default implementation of updateKey().setKey in class AbstractHeap<K,V>public static void main(java.lang.String[] args)
Copyright (c) 2006 C. Scott Ananian