자료구조

[자료구조] 힙

라임온조 2023. 7. 11. 18:15

1. 정의

  • 완전 이진 트리로 최소 힙이라면 작은 값이 위쪽에 있고 최대 힙이라면 큰 값이 위쪽에 있다.
  • 즉, 최소 힙이라면 부모 노드의 키 값이 자식 노드의 키 값보다 작거나 같다.
  • 최대 힙이라면 부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같다.

 

2. 특징

  • 우선순위큐를 위해 사용되는 자료구조
  • 중복된 값을 허용한다

 

3. 구현

  • 배열로 구현한다
  • 구현의 용이성을 위해 트리의 인덱스를 1로 시작한다
    • 왼쪽 자식의 인덱스 = 부모 인덱스 * 2
    • 오른쪽 자식의 인덱스 = 부모 인덱스 * 2 + 1
    • 부모의 인덱스 = 자식의 인덱스 / 2

 

4. 연산

1) 삽입

  • 새로운 요소가 들어오면 완전 이진 트리의 맨 뒤에 일단 삽입을 한다
  • 삽입한 새로운 노드를 부모와 비교해가면서 최소 힙 혹은 최대 힙에 맞게 교환해 나간다

2) 삭제

  • 최대 힙에서는 최대 값을 얻으려고 하는 것이고, 최소 힙에서는 최소 값을 얻으려고 하는 것이니 루트를 삭제하게 된다
  • 삭제한 루트 자리에 완전 이진 트리의 맨 뒤에 있던 노드를 집어 넣는다
  • 루트와 자식을 비교해 나가면서 최소 힙 혹은 최대 힙 특징을 만족 시키도록 교환해 나간다

 

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

[자료구조] 이진 트리  (0) 2023.05.10
[자료구조] 트라이  (0) 2023.05.10
[자료구조] 트리  (0) 2023.05.09
[자료구조] 그래프  (0) 2023.04.19
[자료구조] 그래프의 표현  (0) 2023.04.14