자료구조&알고리즘

[자료구조] 힙 Heap

파송송 2022. 9. 1. 20:40
728x90

Heap

  • 데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 Complete Binary Tree
    • 완전 이진 트리 Complete Binary Tree
      • node 삽입시 최하단 왼쪽 node부터 차례대로 삽입하는 Tree

사용하는 이유

  • 배열의 최대값 최소값 찾기 복잡도 \( O_{n} \) (데이터 넣고 빼는 거 까지)
  • heap의 최대값 최소값 찾기 복잡도 \( O_{logn} \) (데이터 넣고 빼는 거 까지)
  • 우선 순위 큐와 같이 최대값 또는 최소값을 빠르게 찾아야 하는 경우에 사용함

구조

  • Max Heap : 최대값을 구하기 위한 구조
  • Min Heap : 최소값을 구하기 위한 구조
  • 2가지 조건
    • Max Heap의 경우 각 node의 값은 해당 mode의 자식 node가 가진 값보다 크거나 같아야 함.(Min Heap은 반대)
    • 완전 이진 트리 형태를 가짐

https://hackr.io/blog/stack-vs-heap


Heap 과 Binary Search Tree

Heap

  • Max Heap의 경우 Parent Node의 값이 Child Node보다 크거나 같음
  • Child Node는 따로 정해진 규칙없이 배치된다
  • 최대, 최소값을 구하기 위한 구조

Binary Search Tree

  • Parent Node의 값이 가장 크고 left Child Node의 값이 right Chile Node값보다 작다
  • 탐색을 위한 구조

 

728x90