无法在最大堆中插入

问题描述 投票:1回答:1

我正在创建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)  
python list function data-structures heap
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.