신춘 시즌이 끝나 다시 개발로 돌아왔다...!
힙은 트리 기반 자료구조다. 힙은 크게 두 가지로 나뉘는데 Max heap과 Min heap이 있다.
일반적으로 힙은 이진트리로 구현한다.
힙은 완전 이진트리를 사용한다.
즉,
두 가지 조건을 지키는 자료구조가 힙(Min heap)이다.
힙은 이진트리지만 배열로도 구현할 수 있는데 아래와 같다.
힙은 이진탐색을 하기 때문에 O(logn)이 걸린다. 만약 배열/연결 리스트로 구현하게 되면 선형탐색으로 O(n)의 시간복잡도가 생기는 것에 비해 매우 효율적
Min heap은 항상 최상위 부모 노드에 최소값이 있다. 그래서 최상위 노드만 조회하면 최소 값을 얻을 수 있다. O(1)의 시간복잡도를 가진다. 특성상 우선순위 큐를 구현하는데 최적의 자료구조고 아래와 같은 곳에서 사용이 가능하다.
으렵네...