push / pop 복원

새 값은 위로, 루트 교체 값은 아래로 움직인다

힙 연산의 핵심은 배열을 다시 정렬하는 것이 아니라 깨진 부모-자식 조건이 있는 한 경로만 복원하는 것입니다.

push(1)

sift up
끝에 삽입
2 4 7 1 -
부모와 비교하며 swap
루트까지 상승
1 2 7 4 -

pop()

sift down
루트 제거, 마지막 값 이동
4 2 7 - -
더 작은 자식과 swap
남은 값의 최소가 루트
2 4 7 - -
비교 위치 부모와 자식만 본다.
움직임 길이 트리 높이만큼 이동한다.
시간복잡도 push/pop은 O(log N)