class TestMinHeap(TestCase):

    def setUp(self):
        self.intHeap1 = MinHeap(dtype=int)
        self.intHeap2 = MinHeap(dtype=int)

        self.intHeap1.insert(5).insert(4).insert(3).insert(2).insert(1)
        self.intHeap2.insert(1).insert(2).insert(3).insert(4).insert(5)

    def test_heapSize(self):
        self.assertEqual(self.intHeap1.getSize(), 5)
        self.assertEqual(self.intHeap2.getSize(), 5)

    def test_getMinimumKey(self):
        self.assertEqual(self.intHeap1.getMinKey(), 1)
        self.assertEqual(self.intHeap1.getMinKey(), 1)

    def test_deleteMinKey(self):
        self.assertEqual(self.intHeap1.delMinKey(), 1)
        self.assertEqual(self.intHeap1.delMinKey(), 2)
        self.assertEqual(self.intHeap1.delMinKey(), 3)
        self.assertEqual(self.intHeap1.delMinKey(), 4)
        self.assertEqual(self.intHeap1.delMinKey(), 5)
        self.assertEqual(self.intHeap1.delMinKey(), None)

        self.assertEqual(self.intHeap2.delMinKey(), 1)
        self.assertEqual(self.intHeap2.delMinKey(), 2)
        self.assertEqual(self.intHeap2.delMinKey(), 3)
        self.assertEqual(self.intHeap2.delMinKey(), 4)
        self.assertEqual(self.intHeap2.delMinKey(), 5)
        self.assertEqual(self.intHeap2.delMinKey(), None)

    def tearDown(self):
        del self.intHeap1
        del self.intHeap2
Example #2
0
def mergeKListsMinHeap(lists):
    """
    Solution with MinHeap
    :type lists: List[ListNode]
    :rtype: ListNode
    """
    mh = MinHeap()
    for node in lists:
        if node:
            mh.insert(node)

    head = ListNode(0)
    node = head
    while mh.size > 0:
        minNode = mh.delMin()
        nextNode = minNode.next
        if nextNode:
            mh.insert(nextNode)
        node.next = minNode
        node = node.next

    return head.next
def insert_test_1():
    heap = MinHeap()
    for i in [60, 20, 10, 70, 35, 24]:
        heap.insert(i)
        print(heap)
def insert_test_2():
    heap = MinHeap([10, 20, 30, 40, 50])
    for i in [40, 30, 20, 10]:
        heap.insert(i)
        print(heap)