我正在创建MaxHeap类,并且必须使用列表来完成。我在将元素插入堆时遇到麻烦。我不允许向构造函数添加任何内容。我该怎么办?
class MaxHeap:
def __init__(self):
self.Heap=[]
def parent(self, pos):
return pos//2
def leftChild(self, pos):
return 2 * pos
def rightChild(self, pos):
return (2 * pos) + 1
def insert(self,element):
self.Heap[self.__len__] = x
current = self.__len__
while self.Heap[current] > self.Heap[self.parent(current)]:
self.Heap[current], self.Heap[self.parent(current)] = self.Heap[self.parent(current)], self.Heap[current]
current = self.parent(current)
答案 0 :(得分:0)
尝试执行此操作(更新):
def insert(self, element):
self.Heap.append(element)
child = len(self.Heap) - 1
while child > 0:
parent = self.parent(child)
if self.Heap[parent] >= self.Heap[child]:
return
self.Heap[child], self.Heap[parent] = self.Heap[parent], self.Heap[child]
child = parent