Example #1
0
 def mergeKLists(self, lists):
     """
     :type lists: List[ListNode]
     :rtype: ListNode
     """
     if not lists:
         return None
     st = PriorityQueue()
     for x in lists:
         if x:
             st.push(x, x.val)
     if st.size() == 0:
         return None
         
     head = tail = None
     while st.size() != 0:
         ptr = st.pop()
         if ptr.next:
             st.push(ptr.next, ptr.next.val)
         ptr.next = None
         
         if ptr == None:
             continue
         if tail == None:
             head = ptr
         else:
             tail.next = ptr
         tail = ptr
         tail.next = None
     return head
Example #2
0
def buildPriorityQueue(freq_table):
    PriorityQueue = MinNodePriorityQueue()
    for item, freq in freq_table.iteritems():
        # print ("added %s: %d"%(item, freq))
        PriorityQueue.push(Node(item, freq))
    return PriorityQueue