Professional Documents
Culture Documents
Tree
Tree
(a) T hampa (disebut pohon hampa / null tree/ empty tree), atau
(b) T memiliki akar R yang memiliki cabang T1 dan T2
Akar R disebut root, cabang T1 dan T2 disebut dengan substree.dari R. Jika T1
tidak hampa, maka T1 disebut juga dengan left successor dari R, begitu juga
dengan T2 yang tidak hampa, disebut dengan right successor dari R.
B C
D E G
J K
F
L
Gambar 1. Pohon T.
Setiap nodes dari tree T memiliki (derajat keluar) 0, 1, atau 2 successor. Nodes
yang tidak memiliki successor (derajat masuk = 1, dan derajat keluar = 0),
disebut terminal nodes, yang biasa diistilahkan dengan leaf (daun). Pohon biner
T dan T’ dikatakan sama (similar) bila memiliki struktur yang sama, meskipun
dengan elemen yang berbeda. Jika elemennya sama juga, maka keduanya
disebut salinan (copies).
E = ( a - b ) / (( c * d ) + e )
x / (y + e)
z
Soalnya menjadi : E = x / z
Diagramnya :
/
x z
(2) Transformasikan kembali ke soal sebelumnya :
x = a - b, diagramnya menjadi :
/
- z
a b
z = y + e, diagramnya menjadi :
/
- +
a b y e
y = c * d, diagram akhirnya menjadi :
- +
a b * e
c d
Gambar 2. Pohon E
Terminologi pohon: Bila sebuah pohon diibaratkan sebuah keluarga, maka
perhatikan gambar 1 di atas :
(1) B adalah parent (orang-tua) atau father (ayah) dari D dan E (disebut juga
dengan predecessor). Sebaliknya, D adalah left child (anak kiri), dan E
adalah right child (anak kanan) dari B;
(2) D dan E disebut siblings (brother) atau bersaudara;
(3) Setiap garis yang menghubungkan antara satu node dengan node lain
disebut dengan ruas (edge);
(4) Edge-edge yang saling berhubungan dan membentuk satu jalur disebut
dengan path;
(5) Path yang berakhir di leaf disebut dengan branch.
(6) Tingkatan (level) pohon dimulai dengan 0 pada root-nya dan seterusnya
bertambah 1 di setiap keturunannya (descendant);
(7) Setiap nodes yang berada pada tingkatan yang sama disebut dengan satu
generasi (generasi yang sama);
(8) Ketinggian (height) atau kedalaman (depth) sebuah pohon adalah nilai
maksimum dari banyaknya nodes dalam suatu branch, atau bernilai sama
dengan level + 1 dari pohon tersebut.
Pohon komplet T26 adalah pohon yang terdiri dari 26 nodes, yang didiagramkan
secara urut dari atas ke bawah, dan dari kiri ke kanan, dan setiap ayah
maksimal memiliki 2 anak. Berikut contoh pohon komplet T5.
1
2 3
4 5
Dn = [ log2n + 1]
Jadi, jika kita memiliki pohon komplet dengan jumlah nodes sebanyak
1.000.000, maka ketinggian/ kedalaman pohon tersebut = 21.
Sebuah pohon biner dikatakan memiliki ketinggian seimbang bila substree kiri
dan substree kanannya hanya berbeda maksimal 1 tingkat (1 level).
Setiap nodes di pohon biner yang memiliki 2 anak disebut dengan internal
nodes, dan yang memiliki 0 anak disebut external nodes. Perhatikan gambar
4(a), pohon biner T yang ‘dikonversi’ menjadi pohon-2, di mana setiap nodesnya
dibuat (ditambahkan) agar memiliki 0 atau 2 anak.
Penyajian pohon biner di memori ada dua cara, yaitu penyajian kait (link/ linked
list), dan array tunggal (sequential).
Untuk penyajian kait, lihat di gambar 7-11 sampai 7-14 di buku paket.
Sedangkan untuk penyajian array tunggal dapat dilihat di gambar 7-15, dan 7-16
di buku yang sama.
Pohon umum tidak mengenal anak kiri atau anak kanan, sehingga T’ akan sama
dengan T, sedangkan pada pohon biner, T’, belum tentu sama dengan T-nya.
Jelas, yang pada pohon biner T, simpul b yang merupakan anak kiri dari simpul
a, pada pohon biner T’, simpul b menjadi anak kanan dari simpul a. Sehingga T’
tidak sama dengan T. Hal ini tidak berlaku di pohon umum, jika gambar 5(a) dan
5(b) itu merupakan pohon umum, maka T’ = T.
(1) Dari root ke kiri (atau ke level berikutnya jika hanya ada 1 kaitan),
digambarkan bertingkat ke kiri;
(2) Setiap nodes yang selevel (bersaudara) di pohon umum digambarkan
bertingkat ke kanan;
Contoh :
a a
b c b
d e f g d c
e g
f
Gambar 6(a). Pohon Umum
Gambar 6(b). Hasil Konversi ke Pohon Biner
Ada 3 cara standar untuk melakukan traversing dalam binary trees, yaitu inorder,
preorder, dan postorder.
- /
a b ^ e
c d
Inorder :
(1) baca root trees; ** catatan : setiap simpul hanya dicetak 1 kali **
(2) bila belum pernah dikunjungi : kunjungi simpul kirinya sampai ke simpul
kiri paling akhir. Cetak sebagai hasil;
(3) kembali ke root substree(ke root tree bila substree kiri sudah selesai).
Cetak sebagai hasil;
(4) kunjungi simpul kanannya, bila simpul itu merupakan simpul eksternal,
cetak sebagai hasil, bila tidak, ulangi langkah 2.
(5) kembali ke root substrees di level sebelumnya. Cetak simpul itu;
(6) ulangi langkah 2
Hasil akhir : ( a - b ) + ( c ^ d ) / e
- /
a b ^ e
mulai c d
Preorder :
Hasil akhir = + - a b / ^ c d e
mulai
- /
a b ^ e
c d
Postorder :
Hasil akhir = a b - c d ^ e / +
+
- /
a b ^ e
mulai c d
Pohon cari biner adalah pohon biner yang dirancang untuk menskemakan
urutan data yang akan dimasukkan ke dalam memori agar proses pencarian,
penghapusan dan penambahan data dapat berjalan secara efisien dibanding
dengan pemasukan data secara array maupun link.
Sifat dari skema pohon cari biner adalah : (1) setiap elemen yang berada di left
substrees selalu lebih kecil dari elemen yang ada di right substrees, (2) setiap
elemen yang berada di right substrees selalu lebih besar atau sama dengan
elemen yang berada di left substrees.
(a)
75 25 75 25 75
(b) (c) 50
(d)
60
25 75
15 50 66
33
44
Penghapusan sebuah elemen pada pohon cari biner dilakukan sebagai berikut :
(1) untuk elemen yang tidak memiliki anak, elemen tersebut tinggal
dihilangkan saja;
(2) untuk elemen yang hanya memiliki satu anak, posisi elemen tersebut
digantikan dengan anaknya, dan posisi elemen anaknya dihapus;
(3) untuk elemen yang memiliki dua anak, ambil elemen yang merupakan
substree kanannya secara inorder (elemen yang tidak memiliki anak kiri lagi),
letakkan di elemen yang dihapus. Posisi elemen yang dipindahkan tadi
ditempati anaknya;
Untuk lebih jelasnya, berikut pohon cari biner yang ada pada gambar 12 yang
dihapus untuk masing-masing elemen: (a) 44, (b) 75, dan (c) 25.
60 60
25 75 25 66
15 50 66 15 50
33 33
44
60
33 75
15 50 66
44
Prinsipnya hampir sama dengan pembentukan pohon cari biner, tapi yang ini,
elemen lain sudah terbentuk, sehingga tinggal mencari posisi yang sesuai
dengan sifat dari pembentukan skema pohon cari biner.
Sebagai contoh, skema di Gambar 12, akan disisipkan elemen : 79 dan 68.
Maka hasil akhir skemanya adalah :
60
25 75
15 50 66 79
33 68
44
maka preordernya = * z e
karena z = x / y, yang preordernya = / x y
maka hasil gabungannya = * / x y e
Untuk cara yang sama, maka postordernya dari yang paling sederhana berturut-
turut menjadi : (1) z e *
(2) x y / e *
(3) a b + y / e *
(4) a b + c d - / e *
Diagram treenya :
/ e
+ -
a b c d