คำชี้แจงปัญหา
กำหนดฮีปขั้นต่ำให้หาองค์ประกอบสูงสุดในนั้น
ตัวอย่าง
หากฮีปอินพุตเป็น −
องค์ประกอบสูงสุดคือ 55
อัลกอริทึม
- ในโหนดพาเรนต์ฮีปขั้นต่ำจะน้อยกว่าโหนดย่อย ดังนั้นเราจึงสรุปได้ว่าโหนดที่ไม่ใช่ใบไม่สามารถเป็นจำนวนสูงสุดได้
- ค้นหาองค์ประกอบสูงสุดในโหนดปลายสุด
ตัวอย่าง
เรามาดูตัวอย่างกัน −
#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