What is the Heap
완전 Binary Tree 의 일종으로 우선순위 큐 를 위하여 만들어진 자료구조이다.
여러 개의 값들 중에서 최댓값 (Max Heap) 이나 최솟값 (Min Heap) 을 빠르게 찾아내도록 만들어진 자료구조이다.
Heap 은 일종의 반정렬 상태 (느슨한 정렬 상태) 를 유지한다.
부모 노드의 키 값이 자식 노드의 키 값보다 항상 크거나 작은 상태를 유지한다.
B) Vs. Binary Tree
Binary Tree 에서는 중복된 값을 허용하지 않지만, Heap 에서는 중복된 값을 허용한다.
C) Heap 의 종류

D) Heap Building (max Heap 기준)
- Insertion
- Heap 의 가장 마지막 노드에 원소를 추가하고 부모 노드의 값보다 크면 swap 한다.
- Pop (Extraction)
E) Time Complexity
- Get max/min element: O(1)
- Insert an element: O(log n)