무엇인가를 차곡차곡 쌓아올린 더미'라는 뜻
void insert_max_heap(int x)
{
maxHeap[++heapSize] = x;
for(int i = heapSize; i > 1; i /= 2)
{
// 부모노드와 자기 자신비교해 부모가 작으면 swapif(maxHeap[i/2] < maxHeap[i])
{
swap(i/2, i);
}
else
break;
}
}
int delete_max_heap()
{
if(heapSize == 0)
return 0;
int node = maxHeap[1];
maxHeap[1] = maxHeap[heapSize];
maxHeap[heapSize--] = 0;
for(int i = 1; i * 2 <= heapSize;)
{
// 마지막 노드가 왼쪽, 오른쪽 자식 노드보다 크면 끝if(maxHeap[i] > maxHeap[i*2] && maxHeap[i] > maxHeap[i*2+1])
break;
// 왼쪽이 큰 경우else if(maxHeap[i*2] > maxHeap[i*2+1])
{
swap(i, i * 2);
i = i*2;
}
// 오른쪽이 큰 경우else
{
swap(i, i * 2 + 1);
i = i * 2 + 1;
}
}
}
[자료구조] Stack (0) | 2024.02.29 |
---|---|
[자료구조] List (1) | 2024.02.29 |
[자료구조] Heap (0) | 2022.12.29 |