자료구조

[자료구조] 힙(히프) Heap

Seunghyun_KO 2022. 1. 22. 09:00
728x90
반응형

힙(heap)

 - 완전 이진트리에 있는 노드 중에서 키 값이 가장 큰 노드나 키 값이 가장 작은 노드를 찾기 위해 만든 자료구조

 - 최대 힙(max heap)

    ㄴ 키 값이 가장 큰 노드를 찾기 위한 완전 이진트리

    ㄴ 부모 노드 키 값 ≥ 자식 노드 키 값

    ㄴ 루트 노드 : 키 값이 가장 큰 노드

 - 최소 힙(min heap)

    ㄴ 키 값이 가장 작은 노드를 찾기 위한 완전 이진트리

    ㄴ 부모 노드 키 값 ≤ 자식 노드 키 값

    ㄴ 루트 노드 : 키 값이 가장 작은 노드


힙 삽입 연산

1단계 : 완전 이진트리를 유지하면서 노드를 확장하여, 삽입할 원소를 임시 저장
  ㄴ 노드가 n개인 완전 이진트리에서 다음 노드의 확장 자리는 n+1번의 노드
  ㄴ n+1번 자리에 노드를 확장하고, 그 자리에 삽입할 원소를 임시 저장
2단계 : 만들어진 완전 이진트리 내에서 삽입 원소의 자리 찾기
  ㄴ 현재 위치에서 부모 노드와 비교하여 크기 관계 확인
  ㄴ 현재 부모 노드의 키 값 ≥ 삽입 원소의 키 값 관계가 성립하지 않으면, 현재 부모 노드의 원소와 삽입 원소의 자리를 서로 바꿈

 

힙 삭제 연산 : 루트 노드의 원소만 삭제 가능

1단계 : 루트 노드의 원소를 삭제하여 반환
2단계 : 원소의 개수가 n-1개로 줄었으므로, 노드의 수가 n-1인 완전 이진트리로 조정
  ㄴ 노드가 n개인 완전 이진트리에서 노드 수 n-1개의 완전 이진트리가 되기 위해 마지막 노드(n번 노드) 삭제
  ㄴ 삭제된 n번 노드에 있던 원소는 비어있는 루트 노드에 임시 저장
3단계 : 완전 이진트리 내에서 임시 저장된 원소의 자리 찾기
  ㄴ 현재 위치에서 자식 노드와 비교하여 크기 관계 확인
  ㄴ 임시저장 원소의 키 값 ≥ 현재 자식 노드의 키 값 관계가 성립하지 않으면, 현재 자식 노드의 원소와 임시 저장 원소의 자리를 서로 바꿈

순차 자료구조를 이용한 히프의 구현

 - 부모 노드와 자식 노드를 찾기 쉬운 1차원 배열의 순차 자료구조 이용

예시) 1차원 배열을 이용한 힙

728x90
반응형