Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หาค่าสูงสุดใน Min Heap ใน C++


โจทย์

ได้รับ Minimum Heap หาค่าสูงสุดใน Heap นั้น

ตัวอย่าง

ถ้า Heap อินพุตคือ

หาค่าสูงสุดใน Min Heap ใน C++

ค่าสูงสุดคือ 55

อัลกอริทึม

  • ใน Min Heap โหนดพาเรนต์จะน้อยกว่าลูกเสมอ ดังนั้น Non-leaf Node จึงไม่สามารถเป็นค่าสูงสุดได้
  • ค้นหาค่าสูงสุดใน Leaf Nodes เท่านั้น

ตัวอย่างโค้ด

#include <bits/stdc++.h>
using namespace std;

int getMaxElement(int* heap, int n) {
    int maxVal = heap[n / 2];
    for (int i = n / 2 + 1; i < n; ++i) {
        maxVal = max(maxVal, heap[i]);
    }
    return maxVal;
}

int main() {
    int heap[] = {15, 27, 22, 35, 29, 55, 48};
    int n = sizeof(heap) / sizeof(heap[0]);
    cout << "Maximum element = " << getMaxElement(heap, n) << endl;
    return 0;
}

ผลลัพธ์

Maximum element = 55