여기서는 바이너리 힙 데이터 구조에서 요소를 삽입하고 삭제하는 방법을 볼 것입니다. 초기 트리가 아래와 같다고 가정 -
삽입 알고리즘
insert(heap, n, item): Begin if heap is full, then exit else n := n + 1 for i := n, i > 1, set i := i / 2 in each iteration, do if item <= heap[i/2], then break heap[i] = heap[i/2] done end if heap[i] := item End
예시
힙에 30을 삽입하고 싶다고 가정해 봅시다 -
삭제 알고리즘
delete(heap, n): Begin if heap is empty, then exit else item := heap[1] last := heap[n] n := n – 1 for i := 1, j := 2, j <= n, set i := j and j := j * 2, do if j < n, then if heap[j] < heap[j + 1], then j := j + 1 end if if last >= heap[j], then break heap[i] := heap[j] done end if heap[i] := last End이면 끝
예시
최종 힙에서 30개를 삭제한다고 가정해 보겠습니다. -