Возникли проблемы при вставке в максимальную кучу - PullRequest
1 голос
/ 30 марта 2020

Я создаю класс 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)  

1 Ответ

0 голосов
/ 30 марта 2020

Попробуйте это (ОБНОВЛЕНИЕ):

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
...