2. Implementasi Program
• Pohon dapat dibuat dengan menggunakan
linked list secara rekursif.
• Linked list yang digunakan adalah double linked
list non circular
• Data yang pertama kali masuk akan menjadi
node root.
• Data yang lebih kecil dari data node root akan
masuk dan menempati node kiri dari node root,
sedangkan jika lebih besar dari data node root,
akan masuk dan menempati node di sebelah
kanan node root.
3. Operasi-operasi Tree
• Insert: menambah node ke dalam pohon secara rekursif. Jika
data yang akan dimasukkan lebih besar daripada elemen root,
maka akan diletakkan di node sebelah kanan, sebaliknya jika
lebih kecil maka akan diletakkan di node sebelah kiri. Untuk
data pertama akan menjadi elemen root.
• Find: mencari node di dalam pohon secara rekursif sampai
node tersebut ditemukan dengan menggunakan variable
bantuan ketemu. Syaratnya adalah pohon tidak boleh kosong.
• Traverse: yaitu operasi kunjungan terhadap node-node dalam
pohon dimana masing-masing node akan dikunjungi sekali.
• Count: menghitung jumlah node dalam pohon
• Height : mengetahui kedalaman sebuah pohon
• Find Min dan Find Max : mencari nilai terkecil dan terbesar
pada Tree
• Child : mengetahui anak dari sebuah node (jika punya)
6. 6
Ekspresi Aritmatika Menggunakan
Pohon Biner
+
*
A
*
/
E
D
C
B
inorder traversal
A / B * C * D + E
Ekspresi infix
preorder traversal
+ * * / A B C D E
Ekspresi prefix
postorder traversal
A B / C * D * E +
Ekspresi postfix
level order traversal
+ * E * D / C A B
7. 7
Antrian Berprioritas (Priority Queues)
• Antrian berprioritas adalah kumpulan dari
kosong atau banyak elemen setiap elemen
mempunyai prioritas atau nilai
• Berbeda dengan bentuk antrian yang FIFO,
urutan penghapusan dari antrian berprioritas
ditentukan berdasar prioritas elemen
• Elemen dihapus/dikeluarkan dengan menambah
atau mengurangi urutan prioritas daripada
urutan masuk elemen dalam antrian
8. 8
Implementasi Antrian Berprioritas
• Dapat diimplementasikan menggunakan heap
dan leftist trees
• Heap adalah complete binary tree yang
disimpan dengan efisien menggunakan bentuk
array
• Leftist tree adalah struktur data linked yang
disesuaikan untuk penggunaan antrian
berprioritas
9. 9
Max (Min) Tree
• max tree (min tree) adalah pohon yang jumlah
setiap node-nya lebih besar (kecil) atau sama
dengan jumlah anak (children), jika mempunyai
anak
• Node dari max atau min tree dapat mempunyai
lebih dari 2 anak (bisa berupa bukan bentuk
pohon biner)
27. 27
Inisialisasi Max Heap
Inisialisasi heap berarti membentuk heap dengan
mengatur bentuk bentuk pohon jika diperlukan
Contoh: input array = [1,2,3,4,5,6,7,8,9,10,11]
35. 35
Pengurutan Heap (Heap Sort)
• Menggunakan kunci elemen sebagai prioritas
Algoritma
• Letakkan elemen yang akan diurutkan dalam
antrian berprioritas (contoh inisiliasi heap)
• Ekstrak (hapus) elemen dari antrian berprioritas
– Jika antrian min priority queue yang digunakan, elemen
diekstrak dengan urutan prioritas naik
– Jika max priority queue yang digunakan, elemen
diekstrak dengan urutan prioritas menurun
42. 42
Permasalahan Penjadwalan Mesin
• m mesin identik
• n tugas yang harus dikerjakan
• Permasalahan penjadwalan mesin adalah
penugasan pekerjaan kepada mesin sehingga
memerlukan waktu seminimum mungkin untuk
menyelesaikan tugas terakhir
43. 43
Contoh Penjadwalan Mesin
• 3 mesin dan 7 tugas
• Waktu tugasnya adalah [6,2,3,5,10,7,14]
• Bagaimana bentuk penjadwalan yang memungkinkan?
• Penjadwalan yang mungkin:
• Algoritma apa yang digunakan untuk bentuk penjadwalan
di atas?
45. 45
Penjadwalan LPT & Contoh
• Longest Processing Time (LPT)
• Tugas dijadwalkan dengan urutan turun
14, 10, 7, 6, 5, 3, 2
• Setiap tugas dijadwalkan pada mesin yang selesai
paling cepat
Waktu penyelesaian adalah 16
46. 46
LPT Menggunakan Min Heap
• Min Heap mempunyai waktu penyelesaian untuk
m mesin.
• Inisial waktu penyelesaian adalah 0.
• Untuk menjadwalkan pekerjaan, hapus mesin
dengan waktu penyelesaian minimum dari heap.
• Update waktu penyelesaian untuk mesin yang
dipilih dan masukkan kembali mesin dalam min
heap.
47. 47
Huffman Codes
• Untuk kompresi teks, metode LZW (Lempel-Ziv-Welch)
berdasar pada pengulangan substring dalam teks
• Huffman codes adalah metode kompresi yang
berdasarkan pada frekuensi relatif (contoh jumlah
kemunculan simbol dengan simbol yang berbeda dalam
teks)
• Huffman code adalah salah satu teknik dalam kompresi
data yang menggunakan struktur data pohon biner.
• Hal ini dilakukan dengan tujuan mengurangi
penggunaan diskspace dan lalu lintas jaringan.