티스토리 뷰

Computer Science/자료구조

힙(Heap)

JINSUKUKU 2021. 12. 8. 21:53

힙(Heap)

- 최댓값 및 최솟값을 찾아내는 연산을 빠르게 하기 위해 고안된 완전 이진트리를 기본으로 한 자료구조

- 키 값의 대소 관계는 오로지 부모노드와 자식 노드 간에만 성립하며, 형제 사이에는 대소 관계가 정해지지 않는다

- 각 노드의 자식 노드의 최대개수는 힙의 종류에 따라 다르지만, 대부분의 자식 노드의 개수가 최대 2개인 이진 힙을 사용한다

- 힙에서는 가장 높은(혹은 가장 낮은) 우선순위를 가지는 노드가 항상 루트노드에 오게 되는 특징을 갖는다

- 루트 노드에는 항상 데이터들 중 가장 큰 값(혹은 가장 작은 값)이 저장되어 있다

- 따라서 힙 구조에서의 최댓값(혹은 최솟값)을 찾을 때의 시간복잡도는 O(1)이다

- 데이터의 삽입과 삭제는 모두 O(logN)이 소요된다

- 이를 응용하면 우선순위 큐와 같은 추상적 자료형을 구현할 수 있다

 

힙의 종류

최대 힙(max heap)

부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같은 완전 이진트리로 가장 큰 값을 루트 노드가 갖는다

 

최소 힙(min heap)

부모 노드의 키 값이 자식 노드의 키 값보다 크거나 작은 완전 이진트리로 가장 작은 값을 루트 노드가 갖는다

 

 

 

 

 

'Computer Science > 자료구조' 카테고리의 다른 글

힙(Heap)의 삭제 연산 과정  (0) 2021.12.08
힙(Heap)의 삽입 연산 과정  (0) 2021.12.08
큐 (Queue)  (0) 2021.12.08
스택 (Stack)  (0) 2021.12.08
이진 탐색(3) 이것이 코딩테스트다 - 실전 문제  (0) 2021.12.03
댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
최근에 올라온 글
글 보관함
Total
Today
Yesterday