
SplMaxHeap::compare 메서드는 Max Heap을 구현하기 위해 사용됩니다. Max Heap은 부모 노드의 값이 자식 노드의 값보다 항상 큰 트리 구조입니다.
자식 노드의 비교 로직은 다음과 같습니다:
- 자식 노드의 값이 더 큰 경우, 부모 노드와 자식 노드의 위치를 바꿉니다.
- 자식 노드의 값이 더 작은 경우, 부모 노드와 자식 노드의 위치를 바꾸지 않습니다.
이 로직은 SplMaxHeap::compare 메서드에서 구현됩니다. 메서드는 두 노드의 값을 비교하고, 더 큰 노드의 위치를 바꿉니다.
#hostingforum.kr
cpp
void SplMaxHeap::compare(int parent, int child) {
if (data[parent] < data[child]) {
// 자식 노드의 값이 더 큰 경우, 부모 노드와 자식 노드의 위치를 바꿉니다.
swap(data[parent], data[child]);
// 자식 노드가 또 자식 노드가 있는 경우, 자식 노드의 자식 노드와 부모 노드를 비교합니다.
compare(child, 2 * child + 1);
compare(child, 2 * child + 2);
}
}
이 메서드는 Max Heap을 유지하기 위해 사용됩니다. Max Heap은 부모 노드의 값이 자식 노드의 값보다 항상 큰 트리 구조이기 때문에, 자식 노드의 값이 더 큰 경우, 부모 노드와 자식 노드의 위치를 바꿉니다.
2025-03-04 01:46