Advertisement
radchukd

Untitled

Apr 2nd, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.67 KB | None | 0 0
  1. class MinHeap:
  2.     def __init__(self):
  3.         self.size = 0
  4.         self.array = []
  5.  
  6.     def lchild(self, i):
  7.         if i == 0:
  8.             return heap.array[1]
  9.         else:
  10.             try:
  11.                 return heap.array[2*i+1]
  12.             except IndexError:
  13.                 return None
  14.  
  15.     def rchild(self, i):
  16.         if i == 0:
  17.             return heap.array[2]
  18.         else:
  19.             try:
  20.                 return heap.array[2*i+2]
  21.             except IndexError:
  22.                 return None
  23.            
  24.     def father(self, i):
  25.         if i == 1 or i == 2:
  26.             return heap.array[0]
  27.         elif i == 0:
  28.             return None
  29.         elif i % 2 == 0:
  30.             try:
  31.                 return heap.array[i/2-1]
  32.             except IndexError:
  33.                 return None
  34.         else:
  35.             try:
  36.                 return heap.array[i//2]
  37.             except IndexError:
  38.                 return None
  39.    
  40. def is_canonical_min_heap(heap):
  41.     if heap.size == 0 or heap.size == 1:
  42.         return True
  43.     for i in range(heap.size):
  44.         if self.lchild(i) is None and self.rchild(i) is None:
  45.             pass
  46.         if self.lchild(i) > self.rchild(i):
  47.             return False
  48.     return True
  49.  
  50. def canonise_min_heap(heap):
  51.     for i in range(heap.size):
  52.         lc = self.lchild(i)
  53.         rc = self.rchild(i)
  54.         fr = self.father(i)
  55.         if fr is None:  
  56.             pass
  57.         else:
  58.             if heap.array[i] > fr:
  59.                 heap.array[i], fr == fr, heap.array[i]
  60.                 i = 0
  61.         if lc is None and rc is None:
  62.            pass
  63.         else:
  64.             if lc > rc:
  65.                 lc, rc = rc, lc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement