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
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)