8. Pohon m-ary Pohon berakar yang setiap simpul cabangnya mempunyai paling banyak n buah anak disebut pohon m-ary. Jika m = 2 maka pohon disebut pohon biner (binary tree). Gambar 10 adalah gambar pohon 3-ary. Pohon m-ary dikatakan pohon penuh (full) atau pohon teratur jika setiap simpul cabangnya mempunyai tepat m buah anak. Pohon m-ary banyak digunakan di berbagai bidang ilmu maupun dlam kehidupan sehari-hari. Dalam terapannya, pohon m-ary digunakan sebagai model yang merepresentasikan suatu struktur.
Berikut diberikan dua contoh penerapan pohon m-ary, yaitu penurunan kalimat (dalam bidang bahasa) dan direktori arsip di dalam komputer. Contoh penggunaan pohon m-ary lainnya adalah struktur organisasi, silsilah keluarga (dalambidang genetika), struktur bab atau daftar isi didalam buku, bagan pertandingan antara beberapa tim sepakbola dll. Contoh 4. Buat pohon penurunan (parsing tree) yang menurunkan kalimat: A tall boy wears a red hat Penyelesaian:
Akar menyatakan kalimat (sentence), daun menyatakan setiap kata-kata yang menyusun kalimat, sedangkan simpul dalam menyatakan cara pembagian kalimat menjadi unsur-unsur pembentuknya. Sebuah kalimat dlam bahasa Inggris disusun oleh subject, verb, dan object. Subject dapat terdiri dari sebuah article dan noun phrase. Noun phrase dapat terdiri atas adjective dan noun. Object dapat terdiri dari sebuah article dan noun phrase.
article <sentence> noun noun phrase <verb> <subject> <object> wears <adjective> A boy tall a red hat –
Sistem pengarsipan komputer. Contoh 5. Sistem pengarsipan komputer. Windows C:\ My document Program Files My picture Norton Utility Proposal.doc Gedung.jpg Anak.bmp Borland Webshot Winzip
Jumlah daun pohon m-ary penuh Pohon m-ary penuh adalah pohon yang setiap simpulnya tepat mempunyai m anak. Pohon m-ary penuh dengan tinggi h mempunyai jumlah daun mh. Jika sebuah pohon bukan pohon m-ary penuh, maka jumlah daun mh Gambar 11 Pohon 3-ary penuh dengan jumlah daun = 32 = 9
Jumlah seluruh simpul pada pohon m-ary penuh Pada pohon m-ary penuh dengan tinggi h, aras 0 jumlah simpul = m0 = 1 aras 1 jumlah simpul = m1 aras 2 jumlah simpul = m2 ….. aras h jumlah simpul = mh Gambar 11 Pohon 3-ary penuh dengan jumlah daun = 32 = 9
Maka jumlah seluruh simpul pada pohon m-ary adalah: Jika T bukan pohon m-ary penuh, maka:
9. Pohon Biner Pohon biner merupakan pohon m-ary jika m = 2. Pohon biner adalah pohon yang setiap simpul cabangnya mempunyai paling banyak dua buah anak, yaitu anak kiri (left child) dan anak kanan (right child). Pohon yang akarnya merupakan anak kiri disebut upapohon kiri (left subtree). Sedangkan pohon yang akarnya adalah anak kanan disebut upapohon kanan (right subtree). Karena adanya perbedaan anak/upaohon kiri dan anak/upapohon kanan, maka pohon biner adalah pohon terurut.
Dua pohon biner yang berbeda. c b d a Gambar 12 Dua pohon biner yang berbeda.
Gambar 12 Pohon condong kiri Pohon condong kanan Pohon yang semua simpulnya terletak di bagian kiri saja atau di bagian kanan saja disebut pohon condong (skewed tree). Pohon yang condong ke kiri disebut pohon condong-kiri (skew left). Pohon yang condong ke kanan disebut pohon condong- kanan (skew left). c b d a c b d a Gambar 12 Pohon condong kiri Pohon condong kanan (a) (b)
Pohon biner penuh (full binary tree) Adalah pohon biner yang setiap simpulnya mempunyai tepat dua anak, kiri dan kanan, kecuali simpul pada aras bawah. Pohon biner penuh dengan tinggi h memiliki jumlah daun sebanyak 2h, sedangkan jumlah simpulnya adalah : Gambar 13 Pohon biner penuh
T1 T2 T3 Gambar 14 Pohon biner seimbang (balanced binary tree) Pohon biner seimbang adalah pohon biner yang setiap daunnya mempunyai aras (level) h atau h – 1. T1 T2 T3 Gambar 14
T1 T2 T3 Gambar 14 T1 adalah pohon biner seimbang, karena seluruh daunnya berada pada level 3 dan 4. T2 adalah pohon biner tak seimbang, karena daun-daunnya berada pada level 2, 3, dan 4. Sedangka T3 seimbang, karena seluruh daunnya berada pada level 3.
10. Pohon Ekspresi Pohon ekspresi adalah pohon biner dengan daun menyatakan operand dan simpul dalam termasuk akar menyatakan operator. Tanda kurung tidak lagi diperlukan bila suatu ekspresi aritmatik direpresentasikan sebagai pohon biner. Sebagai contoh, ekspresi (a+b)*(c/(d+e)) dinyatakan dalam pohon biner pada Gambar 15. Daun menyatakan operand a, b, c, d, dan e, sedangkan simpul dalam, termasuk akar, menyatakan operator +, *, dan /.
+ * a / b c d e Gambar 15 Pohon ekspresi dari (a+b)*(c/(d+e))
Pohon ekspresi digunakan oleh compiler bahasa tingkat tinggi untuk mengevaluasi ekspresi yang ditulis dalam notasi infix, prefix (polish notation) , dan postfix (inverse polish notation). Dalam notasi infix, operator berada diantara dua buah operand. Pada notasi prefix, operator mendahului dua buah operand-nya. Pada notasi postfix, kedua operand mendahului operatornya.
Contoh 6 Notasi dalam bentuk infix : (a + b)*(c/(d + e)) Notasi dalam bentuk prefix : * + a b / c + d e Notasi dalam bentuk postfix : a b + c d e + / * Contoh 7 Gambarkan pohon ekspresi dari ekspresi (a + b)*(c/(d + e)) Penyelesaian: Pohon ekspresi dari notasi prefix dibangun dari bawah ke atas dengan memperhatikan urutan prioritas pengerjaan operator. Operator / dan * mempunyai prioritas lebih tinggi dari Operator + dan –.
* / a b c d e Mula-mula dibentuk upapohon untuk (a + b), kemudian upapohon untuk (d + e), lalu c(/(d + e), dan terakhir gabungkan upapohon untuk (a + b) dengan upapohon c(/(d + e). + * a / b c d e Gambar 16 Pembentukan pohon ekspresi dari (a + b)*(c/(d + e))
Pembentukan Pohon Ekspresi dari Notasi Postfix (Dua operand mendahului satu operator, mulai dari yang terkiri) Contoh 7 Bangun pohon ekspresi dari notasi postfix a b + c d e + / * Penyelesaian a b + c d e / *
Pembentukan Pohon Ekspresi dari Notasi Postfix (Dua operand mendahului satu operator, mulai dari yang terkiri) Contoh 7 Bangun pohon ekspresi dari notasi postfix a b + c d e + / * Penyelesaian a b + c d e / *
Pembentukan Pohon Ekspresi dari Notasi Postfix (Dua operand mendahului satu operator, mulai dari yang terkiri) Contoh 7 Bangun pohon ekspresi dari notasi postfix a b + c d e + / * Penyelesaian a b + c d e / * + b a
Pembentukan Pohon Ekspresi dari Notasi Postfix (Dua operand mendahului satu operator, mulai dari yang terkiri) Contoh 7 Bangun pohon ekspresi dari notasi postfix a b + c d e + / * Penyelesaian a b + c d e / * + b a
c d e + / * + b a
c d e + / * + b a + e d
c d e + / * + b a + b a + e d
c d e + / * + b a + b a + e d
c d e + / * + b a + b a + e d + e d / c
c d e + / * + b a + b a + e d + e d / c + b a
c d e + / * + b a + b a + e d + e d / c + b a
* + e d / c + b a
* + e d / c + b a + e d / c b a *
Pembentukan Pohon Ekspresi dari Notasi Prefix (Sebuah operator mendahului dua operand, mulai dari yang terkiri) Contoh 8 Bangun pohon ekspresi dari notasi prefix * + a b / c + d e Penyelesaian * + a b / c d e
Pembentukan Pohon Ekspresi dari Notasi Prefix (Sebuah operator mendahului dua operand, mulai dari yang terkiri) Contoh 8 Bangun pohon ekspresi dari notasi prefix * + a b / c + d e Penyelesaian * + a b / c d e
Pembentukan Pohon Ekspresi dari Notasi Prefix (Sebuah operator mendahului dua operand, mulai dari yang terkiri) Contoh 8 Bangun pohon ekspresi dari notasi prefix * + a b / c + d e Penyelesaian * + a b / c d e + b a
Pembentukan Pohon Ekspresi dari Notasi Prefix (Sebuah operator mendahului dua operand, mulai dari yang terkiri) Contoh 8 Bangun pohon ekspresi dari notasi prefix * + a b / c + d e Penyelesaian * + a b / c d e + b a
Pembentukan Pohon Ekspresi dari Notasi Prefix (Sebuah operator mendahului dua operand, mulai dari yang terkiri) Contoh 8 Bangun pohon ekspresi dari notasi prefix * + a b / c + d e Penyelesaian * + a b / c d e + b a
* + a b / c d e + b a
* + a b / c d e + b a
* + a b / c d e + b a + b a
* + a b / c d e + b a + b a + b a
* + a b / c d e + b a + b a + e d
* + a b / c d e + b a + b a + e d + e d / c
* + a b / c d e + b a + b a + e d + e d / c + b a
* + e d / c + b a
* + e d / c + b a + e d / c b a *
Tugas 6: Nyatakan ekspresi berikut ke dalam pohon biner! a. ((x+2) 3) * ( y – (3 + x) ) – 5 b. (x + y) 2) + ((x – 4)/3) 2. Nyatakan ekspresi pada soal 1 ke dalam bentuk prefix dan postfix! 3. Tentukan nilai dari ekpresi: a. + – * 2 3 5 / 2 3 4 b. 7 2 3 * – 4 9 3 / +