힙은 완전 이진 트리(Complete Binary Tree)를 기본으로 하는 자료구조이다. 힙은 최댓값 또는 최솟값을 빠르게 찾아내는 연산을 위해 고안되었다.

힙의 종류

힙의 특징

힙의 주요 연산

요소 삽입

image.png

위와 같은 힙에 10을 삽입하는 과정을 나타내겠다. 힙은 완전 이진 트리여야 하므로 새로운 요소는 항상 제일 마지막 레벨의 가장 왼쪽 빈 자리에 삽입된다.

image.png

<aside> 💡

다른 케이스

image.png

만약 요소 1 자리가 비어 있다면 요소 1자리로 가게 된다. 이는 완전 이진 트리의 속성을 유지하기 위함이다.

image.png

</aside>

마지막 위치에 새 요소를 삽입한 후에는 힙의 속성(부모 노드가 자식 노드보다 크거나 같음)을 유지하기 위해 부모 노드와 비교하면서 필요한 경우 위치를 교환한다. 이 과정을 삽입한 노드가 올바른 위치를 찾을 때까지 반복한다.

image.png

먼저, 10이 부모 노드 4보다 크므로 두 값을 교환한다.

image.png

다음으로, 10이 새로운 부모 노드인 6보다 크므로 다시 두 값을 교환한다.