- return 1/2 내림
- return 2i
- return 2i+1
노드가 입력으로 주어졌을 때 노드의 좌 우 하위 트리들은 max-heap 특성을 유지하지만
노드의 값이 하위 트리 값보다 작거나 같아서 max-heap 특성을 만족하지 않을 때 max-heap 특성이 유지되도록 바꾸는 연산
def buildMaxHeap(A):
heapsize = len(A)
for i in range(heapsize // 2-1, -1, -1):
heapify(A, i,heapsize)
def heapify(A, i,heapsize):
leftChild = 2 * i +1
rightChild = (2 * i) + 2
if i < heapsize // 2:
if A[leftChild] <= A[i] and A[rightChild] <= A[i]:
return
elif A[leftChild] > A[rightChild]:
A[i], A[leftChild] = A[leftChild], A[i]
heapify(A, leftChild,heapsize)
elif A[rightChild] > A[leftChild]:
A[i], A[rightChild] = A[rightChild], A[i]
heapify(A, rightChild,heapsize)
?? 후술