자료구조 중 하나로 우선순위 큐Queue를 이용하여 만든 완전 이진 트리
우선순위 큐Queue
우선 순위를 가진 데이터들이 우선 순위대로 사용 되는 큐Queue
최댓값 또는 최솟값을 찾는데 이용되며, 중복 된 값을 허용한다.
최소힙
부모 노드(상위 노드)보다 자식노드(하위 노드)의 키값이 작거나 같음
최대힙
부모 노드(상위노드)보다 자식노드(하위 노드)의 키값이 크거나 같음
노드의 관계
- 왼쪽 자식 노드의 인덱스 = 부모 노드의 인덱스 * 2
- 오른쪽 자식 노드의 인덱스 = 부모 노드의 인덱스 * 2 + 1
- 부모 노드의 인덱스 = 자식 노드의 인덱스 / 2
삽입
1. 새로운 요소Value 입력
2. 가장 하위 자식노드와 비교
3. 비교값이 참이면 상위 노드와 삽입 노드의 자리 교체
삭제
1. 원하는 노드 삭제
2. 해당 루트중 최하위 노드를 최상위 노드(가장 부모 노드)로 위치
3. 자식 노드와 비교
4. 비교값이 참이면 자식 노드와 자리 교체
O(log n)