def extract_max(self): """ The method gets the max of that heap actually it removes it so :) """ if self.heap_size < 1: raise Exception("The heap is empty sorry") maximum = self.__getitem__(0) super(MaxHeap,self).__setitem__(0,self.__getitem__(self.heap_size-1)) #remove the item self.__delitem__(self.heap_size-1) self.heap_size -=1 #check if that value has broken sth max_heapify(self,0,self.heap_size-1) return maximum
def new_delete(self,index): """ New delete operation for heap """ if self.heap_size < 1: raise Exception("The heap is empty sorry") #swap it with the latest one super(MaxHeap,self).__setitem__(index,self.__getitem__(self.heap_size-1)) #remove the item self.__delitem__(self.heap_size-1) self.heap_size -=1 if index == self.heap_size: return #print "Index is :",index #check firstly if it is bigger than its parent if (index > 0) and (self.__getitem__(self.__get_parent_index(index)) < self.__getitem__(index)): self.increase_key(index,self.__getitem__(index),bigger=False) else:#if not heapify to down max_heapify(self,index,self.heap_size-1)