Heap(힙)

2024. 11. 27. 00:09·Algorithm
목차
  1. Heap

Heap

데이터에서 최댓값과 최솟값을 빠르게 찾기 위해 고안된 완전 이진 트리

완전 이진 트리
: 이진 트리에 노드를 삽입할 때 왼쪽부터 차례대로 삽입하는 트리
  • (부모 노드의 인덱스) = (자식 노드 인덱스) // 2
  • (왼쪽 자식 노드의 인덱스) = (부모 노드의 인덱스) * 2
  • (오른쪽 자식 노드의 인덱스) = (부모 노드의 인덱스) * 2 + 1
  • 중복 허용

 

종류

  • 최대 힙(max heap) : 부모 노드의 값이 자식 노드의 값보다 크거나 같은 완전 이진 트리
  • 최소 힙(min heap) : 부모 노드의 값이 자식 노드의 값보다 작거나 같은 완전 이진 트리

 

동작

☁️ 삽입

삽입할 노드는 기본적으로 왼쪽 최하단부 노드부터 채워진다.

1️⃣ 15를 왼쪽 최하단 노드에 삽입한다.

2️⃣ 10을 왼쪽 최하단 노드에 삽입한 뒤, 부모와 비교한다. 부모보다 작으므로 그 자리에 위치한다.

3️⃣ 왼쪽 최하단 노드가 이미 있으므로 8을 오른쪽 최하단 노드에 삽입한 뒤, 부모와 비교한다. 부모보다 작으므로 그 자리에 위치한다.

4️⃣ 3을 왼쪽 최하단 노드에 삽입한 뒤, 부모와 비교한다. 부모보다 작으므로 그 자리에 위치한다.

5️⃣왼쪽 최하단 노드가 이미 있으므로 4를 오른쪽 최하단 노드에 삽입한 뒤, 부모와 비교한다. 부모보다 작으므로 그 자리에 위치한다.

 

📍 힙의 데이터보다 클 경우

1️⃣ 20을 왼쪽 최하단부 노드에 삽입한다.

2️⃣ 20의 부모 노드인 8과 비교한다. 20이 더 크므로 8과 위치를 바꾼다. (swap)

3️⃣ 20의 부모 노드인 15와 비교한다. 20이 더 크므로 15와 위치를 바꾼다. (swap)

 

 

☁️ 삭제

데이터가 삭제 된다면 가장 큰 값인 부모 노드의 값이 삭제된다.

1️⃣ 최대값을 갖는 부모 노드를 삭제한다.

2️⃣ 부모 노드가 비었으므로, 가장 최하단부 노드를 루트로 옮긴다.

3️⃣ 부모 노드인 8보다 값이 큰 자식 노드가 있는지 비교한다.1) 왼쪽, 오른쪽 자식 노드 모두 부모 노드보다 클 경우2) 왼쪽, 오른쪽 자식 노드 중 하나만 부모 노드보다 클 경우

 

  • 왼쪽 자식 노드와 오른쪽 자식 노드를 비교하여, 더 큰 자식 노드와 부모 노드의 위치를 바꾼다. (swap)
  • 둘 중에 부모 노드보다 큰 자식 노드와 부모 노드의 위치를 바꾼다. (swap)
728x90
반응형

'Algorithm' 카테고리의 다른 글

Greedy(탐욕법)  (0) 2024.11.27
Exhaustive Search(완전 탐색)  (0) 2024.11.27
Sort(정렬)  (1) 2024.11.27
Stack/Queue(스택/큐)  (1) 2024.11.26
Hash(해시)  (0) 2024.11.26
  1. Heap
'Algorithm' 카테고리의 다른 글
  • Exhaustive Search(완전 탐색)
  • Sort(정렬)
  • Stack/Queue(스택/큐)
  • Hash(해시)
nueos
nueos
  • nueos
    nueos 공부 기록
    nueos
  • 전체
    오늘
    어제
    • 분류 전체보기 (191)
      • 해커톤 (1)
      • 네이버 BoostCamp (6)
      • LG 유플러스 유레카 SW (3)
        • React (21)
        • TypeScript (2)
        • JavaScript (2)
        • HTML+CSS (5)
        • Spring (7)
        • Java (6)
        • SQL (2)
        • Algorithm (8)
        • CX (6)
        • Git (2)
        • 프로젝트 (2)
        • 스터디 (9)
        • 과제 (8)
        • 특강 (1)
      • React (3)
      • Next (0)
      • Javascript (2)
      • HTML (2)
      • CSS (9)
      • Algorithm (6)
      • Database (0)
      • OS (13)
      • C++ (24)
      • Python (1)
      • jQuery (1)
      • Django (1)
      • Git (1)
      • 개발 지식 (3)
      • 정보 보안 (22)
      • 포렌식 (1)
      • 암호 (2)
      • 기타 (4)
      • 패스트캠퍼스 FE 프로젝트십 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    exhaustive search
    완전 탐색
    디지랩챌린지
    Stack
    Queue
    디지털혁신
    큐
    heap
    힙
    스택
    제주지역혁신플랫폼지능형서비스사업단
    기술로바꾸는세상
    제주해커톤
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
nueos
Heap(힙)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.