Finished Heap implementations. One needs a Comparator<K> the other is parameterized on Comparables<K>