힙은 우선순위 큐를 위해 만들어진 자료구조임. 우선순위큐란 완전이진트리인데 부모가 가지는 값은 자식보다 무조건 큰 값을 가지고 있음.( 혹은 무조건 작은 값). 큰 값을 가지는 것을 최대 힙, 작은 값을 가지는 것을 최소 힙이라고 함. 그래서 루트에는 항상 제일 큰 값 혹은 제일 작은 값을 가지고 있는 것이 특징입니다. 기본적으로 구현 같은 경우 배열을 사용하거나 linked를 사용할 수 있습니다. 저는 배열을 사용하여 구현했습니다. 인덱스 루트 노드의 인덱스를 1로 시작하게 하면 (0번 노드는 버림) 부모 인덱스 = (자식 인덱스) / 2 왼쪽 자식 인덱스 = (부모 인덱스) * 2 오른쪽 자식 인덱스 = (부모 인덱스) * 2 이렇게 나타 낼 수 있겠죠. 위 그림에서 99는 인덱스 1, 50은 2, ..