힙 구조와 연산

힙 push/pop 상태 변화

힙은 정렬된 배열이 아니라 부모와 자식 사이의 우선순위 조건만 지키는 트리입니다. push와 pop은 이 조건을 복구하는 과정입니다.

01

삽입

새 값을 끝에 붙인 뒤 부모와 비교

부모보다 우선순위가 높으면 교환하며 루트 방향으로 올라갑니다.

02

삭제

루트를 빼고 마지막 값을 루트로 이동

두 자식 중 더 우선순위가 높은 쪽과 바꾸며 아래로 내려갑니다.

03

구축

배열 전체를 한 번에 힙으로 변환

반복 push보다 heapify가 전체 구축에서는 더 낮은 비용을 가집니다.

힙 조건 확인

  • 최소 힙인지 최대 힙인지 비교 방향을 먼저 정합니다.
  • 배열 표현에서는 부모와 자식 인덱스 계산을 실수하지 않습니다.
  • pop 후 마지막 원소를 루트에 올렸다면 아래 방향 복구가 필요합니다.

연산 비용

peek O(1) 루트 확인
push O(log n) 위로 이동
pop O(log n) 아래로 이동