힙은 이진트리로 구현된다.

Max Heap

부모 노드가 자식보다 항상 크다.

Min Heap

부모 노드가 자식보다 항상 작다.

배열로 구현 가능하다.

항상 힙이 왼쪽 자식 부터 채워진다는 complete tree의 성질을 이용한다면

배열로 구현 가능하다.

자식에서 부모 노드로 parent : (i - 1) / 2

부모에서 자식 노드로 left chlid : 2i + 1, right child: 2i + 2

만약 천만개의 수중 가장 큰 3개를 힙으로 구현하려면 1000만개의 공간이 필요

⇒ 3개로 제한한 min heap

1              7             3

3 5. ⇒ 3. 5. ⇒ 7. 5

7

이미 3개인 경우 하나를 넣을 때 가장 작은 탑을 제거하면서 넣어주면 결국엔 가장 큰거 3개 남는다.

LeetCode

347