Min-heap with k elements. Pop smallest, push its next.
function mergeKLists(lists): heap = MinHeap() for list in lists: if list: heap.push(list) dummy = ListNode(0) curr = dummy while heap: node = heap.pop() curr.next = node curr = curr.next if node.next: heap.push(node.next) return dummy.next
time, space.