My first Magazine pemrograman-kompetitif-dasar | Page 124
10 Struktur Data NonLinear
Gambar 10.17: Contoh penomoran indeks complete binary tree pada array .
Dengan logika yang serupa, orang tua dari node ke-i adalah node ke-b i−1
2 c. Apabila Anda
memutuskan untuk menggunakan array one-based, maka rumusnya menjadi:
• Anak kiri: 2i.
• Anak kanan: 2i + 1.
• Orang tua: bi/2c
Karena panjang array dapat bertambah atau berkurang, diperlukan array yang ukurannya
dinamis. Namun, pada contoh ini, kita akan menggunakan array berukuran statis dan sebuah
variabel yang menyatakan ukuran array saat ini. Ukuran array statis ini bisa dibuat sebesar
banyaknya operasi push paling banyak yang mungkin dilakukan, yang misalnya dinyatakan sebagai
maxSize. Algoritma 53 menunjukkan prosedur untuk melakukan inisialisasi pada heap .
Algoritma 53 Inisialisasi pada heap , arrHeap dan size merupakan variabel global.
arrHeap ← new integer[maxSize]
2: procedure INITIALIZE H EAP ()
3:
size ← 0
4: end procedure
1:
. Buat array arrHeap berukuran maxSize
. Variabel yang menunjukkan ukuran array saat ini.
Untuk memudahkan penulisan kode, mari definisikan fungsi pembantu yang ditunjukkan pada
Algoritma 54. Secara berturut-turut, fungsi tersebut adalah fungsi untuk mencari indeks orang
tua, anak kiri, maupun anak kanan dari suatu node . Algoritma 55 sampai dengan Algoritma 57
menunjukkan implementasi untuk operasi push , pop , dan top .
114