자료구조

힙 트리 (Heap tree)

비번변경 2022. 3. 18. 17:36

힙 트리

힙 트리

최댓값 또는 최솟값을 빠르게 찾기 위해 고안된 완전 이진트리의 일종

우선순위 큐를 위해 만들어진 자료구조이다.

부모-자식 노드 간의 대소관계가 성립한다는 속성을 만족하며, 일종의 반정렬 상태(느슨한 정렬 상태)를 유지한다. 형제 간의 대소 관계는 없다.

값을 중복하여 저장할 수 있으며, 일반적으로 간단히 heap이라고 말한다.

 

우선순위 큐
데이터가 우선순위를 가지고 있어, 우선순위가 높은 데이터가 먼저 나가는 우선순위의 개념을 큐에 도입한 자료 구조
배열, 연결 리스트 또는 힙으로 구현할 수 있으며 셋 중에서는 힙으로 구현하는 것이 가장 효율적이다.

 

구현

힙 트리는 1차원 배열로도 충분히 구현할 수 있다.

 

조건

  • 루트 노드의 인덱스는 1이다. 0으로 설정하면 부모-자식 간의 대소관계를 표현하기 어렵다.
  • 왼쪽 자식 노드의 인덱스 = 부모 노드 인덱스 * 2
  • 오른쪽 자식 노드의 인덱스 = 부모 노드 인덱스 * 2 + 1
  • 부모 노드의 인덱스 = 자식 노드 인덱스의 // 2 (여기서 //는 나눗셈의 몫을 뜻한다.)

힙 트리와 리스트

Heap에서 삽입 및 삭제 연산이 어떻게 이뤄지는지는 다음에 마저 정리한다.

 

 

 


참고 문서

https://mattlee.tistory.com/48

https://ko.wikipedia.org/wiki/%ED%9E%99_(%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0)