class MinHeap:
def __init__(self):
self.>
def parent(self, index):
return index / 2
def insert(self, n):
self.data.append(n)
i = len(self.data) - 1
while i > 1:
parent = self.parent(i)
if self.data[i] < self.data[parent]:
self.swap(i, parent)
i = parent
else:
break
def delete(self):
self.swap(1, len(self.data) - 1)
self.data.pop(len(self.data) - 1)
self.minHeapify(1)
def leftchild(index):
return index * 2
def rightchild(index):
return index * 2 + 1
def minHeapify(self, i):
left = self.leftchild(i)
right = self.rightchild(i)
smallest = i
if left <= len(self.data) - 1 and self.data[left] < self.data[samllest]:
smallest = left
if right <= len(self.data) - 1 and self.data[right] < self.data[smallest]:
smallest = right
if smallest != i:
self.swap(i, smallest)
self.minHeapify(smallest)
import random
minheap = MinHeap()
for i in range(10):
minheap.insert(random.randint(1, 50))
print (minheap)
parent의 리턴하는곳에서 문제생기나봄 int로 강제형변환해바