class Heap: def __init__(self): self.heapList = list() self.size = 0 #indexing the nodes def leftChild(self, i): return 2*i+1 def rightChild(self, i): return 2*i+2 def parent(self, i): return i//2 # Getting MAX in MaxHeap and MIN Values in MinHeap def getMax(self):# for MaxHeap: O(1) if self.size > 0: return self.heapList[0] else:raise Exception("Empty Heap") def getMin(self): # for MinHeap: O(1) if self.size > 0: return self.heapList[0] else:raise Exception("Empty Heap") #Heapifying the complete Binary tree def percolateDown(self, i): while (i*2)<= self.size: minimumChild = self.minChild(i) if self.heapList[i]>self.heapList[minimumChild]: self.heapList[i],self.heapList[minimumChild]=self.heapList[minimumChild],self.heapList[i] i=minimumChild def minChild(self, i): if i*2+1 > self.size: return i*2 else: if self.heapList[i*2] < self.heapList[i*2+1]: return i*2 else: return i*2+1 def percolateUp(self, i): while i//2>0: if self.heapList[i]