Last active
August 20, 2019 13:25
-
-
Save CrazyPython/1233be4bb096bdd9cd3223d372d2f3ec to your computer and use it in GitHub Desktop.
Simple heap wrapper library.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import heapq | |
class Heap(object): | |
_heap = [] | |
def __init__(self, l=()): | |
_heap = list(l) | |
heapq.heapify(_heap) | |
def isempty(self): | |
if len(self._heap) == 0: | |
return True | |
return False | |
def getroot(self): | |
return self._heap[0] if len(self._heap) != 0 else 0 | |
def __len__(self): | |
return len(self._heap) | |
def push(self, item): | |
raise NotImplementedError | |
def pop(self): | |
raise NotImplementedError | |
def pushpop(self, item): | |
raise NotImplementedError | |
def replace(self, item): | |
raise NotImplementedError | |
class HeapMax(Heap): | |
def push(self, item): | |
heapq.heappush(self._heap, -item) | |
def pop(self): | |
return -heapq.heappop(self._heap) | |
def view_max(self): | |
return self.getroot() | |
def pushpop(self, item): | |
return -heapq.heappushpop(self._heap, -item) | |
def replace(self, item): | |
return -heapq.heapreplace(self._heap, -item) | |
class HeapMin(Heap): | |
def push(self, item): | |
heapq.heappush(self._heap, item) | |
def pop(self): | |
return heapq.heappop(self._heap) | |
def view_min(self): | |
return self.getroot() | |
def pushpop(self, item): | |
return heapq.heappushpop(self._heap, item) | |
def replace(self, item): | |
return heapq.heapreplace(self._heap, item) |
Printing HeapMin:
def __len__(self):
return len(self._heap)
def __str__(self):
return f'{self._heap}'
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Constructor for HeapMax: