There is the problem, when i try to delete the current value in the array, give me some error that do not delete that, i think that is all about recursivity, but i really have like 4 hours seing something but i see that anything is well
def max_heap(a):
length = len(a)
for value in range(length // 2, 0, -1):
maxHeapify(a, length, value)
def add(a, value):
a.append(value)
max_heap(a)
def delete(a, value):
length = len(a)
for i in range(0, length // 2, -1):
search(a, length, i)
def search(a, i, value):
if a[i] < value: return False
if a[i] == value:
del a[i]
max_heap(a)
return search(a, i, value)
else:
l = i * 2
r = i * 2 + 1
if a[l] == value:
del a[l]
max_heap(a)
return search(a, i, value)
if a[r] == value:
del a[r]
max_heap(a)
return search(a, i, value)
def showMax(a):
return a[1]
def maxHeapify(a, heapSize, i):
left = i * 2
right = i * 2 + 1
largest = i
if left < heapSize and a[left] > a[i]:
largest = left
if right < heapSize and a[right] > a[largest]:
largest = right
if largest != i:
a[i], a[largest] = a[largest], a[i]
maxHeapify(a, heapSize, largest)
heap = [None, 2, 5, 9, 1, 5, 4, 3, 12]
max_heap(heap)
add(heap, 13)
print(delete(heap, 12))
print(heap)