Package org.jheaps

Interface MergeableAddressableHeap<K,​V>

  • Type Parameters:
    K - the type of keys maintained by this heap
    V - the type of values maintained by this heap
    All Superinterfaces:
    AddressableHeap<K,​V>
    All Known Implementing Classes:
    BinaryTreeSoftAddressableHeap, CostlessMeldPairingHeap, FibonacciHeap, HollowHeap, LeftistHeap, PairingHeap, RankPairingHeap, SimpleFibonacciHeap, SkewHeap

    public interface MergeableAddressableHeap<K,​V>
    extends AddressableHeap<K,​V>
    An addressable heap that allows melding with another addressable heap.

    The second heap becomes empty and unusable after the meld operation, meaning than further insertions are not possible and will throw an IllegalStateException.

    A ClassCastException will be thrown if the two heaps are not of the same type. Moreover, the two heaps need to use the same comparators. If only one of them uses a custom comparator or both use custom comparators but are not the same by equals, an IllegalArgumentException is thrown.

    Note that all running time bounds on mergeable heaps are valid assuming that the user does not perform cascading melds on heaps such as:

     d.meld(e);
     c.meld(d);
     b.meld(c);
     a.meld(b);
     
    The above scenario, although efficiently supported by using union-find with path compression, invalidates the claimed bounds.
    Author:
    Dimitrios Michail
    • Method Detail

      • meld

        void meld​(MergeableAddressableHeap<K,​V> other)
        Meld a heap into the current heap. After the operation the other heap will be empty and will not permit further insertions.
        Parameters:
        other - a merge-able heap
        Throws:
        ClassCastException - if other is not compatible with this heap
        IllegalArgumentException - if other does not have a compatible comparator