The delete do not work in deleteHeap in python

24 views Asked by At

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)
0

There are 0 answers