Tree bisa didefinisikan sebagai suatu kumpulan elemen salah satu
elemennya disebut dengan akar (root), dan sisa elemen lainnya (yang disebut
simpul) terpecah menjadi sejumlah himpunan yang paling tidak berhubungan satu
sama lain, yang disebut dengan subpohon (subtree), atau disebut juga cabang.
Jika kita melihat pada subpohon, maka subpohon inipun juga mempunyai akar
dan sub-subpohonnya masing-masing.
Dalam kehidupan sehari-hari, tree dapat dilihat dari pohon silsilah keluarga.
Tingkat yang tertinggi disebut juga sebagai root.
elemennya disebut dengan akar (root), dan sisa elemen lainnya (yang disebut
simpul) terpecah menjadi sejumlah himpunan yang paling tidak berhubungan satu
sama lain, yang disebut dengan subpohon (subtree), atau disebut juga cabang.
Jika kita melihat pada subpohon, maka subpohon inipun juga mempunyai akar
dan sub-subpohonnya masing-masing.
Dalam kehidupan sehari-hari, tree dapat dilihat dari pohon silsilah keluarga.
Tingkat yang tertinggi disebut juga sebagai root.
Jika kita memperhatikan gambar di atas, sebenarnya yang disebut dengan
simpul (node atau vertex) adalah elemen pohon yang berisi informasi / data dan
petunjuk percabangan. Pada pohon diatas memiliki 15 simpul yang berisi
informasi berupa huruf A, B, C, D sampai O lengkap dengan percabangannya.
Akar / Root dari pohon diatas berisi huruf A.
Tingkat (level) suatu simpul ditentukan dengan pertama kali menentukan
akar sebagai bertingkat 1. jika suatu simpul dinyatakan sebagai tingkat N, maka
simpul-simpul yang merupakan anaknya dikatakan berada dalam tingkat N+1.
pada pohon diatas merupakan tree dengan 5 level.
Selain tingkat, dikenal juga istilah derajad (degree) dari suatu simpul.
Derajad suatu simpul dinyatakan sebagai banyaknya anak atau turunan dari
simpul tersebut.
Contoh, dari gambar 7.1 simpul A mempunyai derajad 2, simpul B
mempunyai derajad 2, simpul C berderajad 3. simpul-simpul F, H, I, J, K, L, N, O
yang semuanya berderajad nol, disebut dengan daun (leaf).
simpul (node atau vertex) adalah elemen pohon yang berisi informasi / data dan
petunjuk percabangan. Pada pohon diatas memiliki 15 simpul yang berisi
informasi berupa huruf A, B, C, D sampai O lengkap dengan percabangannya.
Akar / Root dari pohon diatas berisi huruf A.
Tingkat (level) suatu simpul ditentukan dengan pertama kali menentukan
akar sebagai bertingkat 1. jika suatu simpul dinyatakan sebagai tingkat N, maka
simpul-simpul yang merupakan anaknya dikatakan berada dalam tingkat N+1.
pada pohon diatas merupakan tree dengan 5 level.
Selain tingkat, dikenal juga istilah derajad (degree) dari suatu simpul.
Derajad suatu simpul dinyatakan sebagai banyaknya anak atau turunan dari
simpul tersebut.
Contoh, dari gambar 7.1 simpul A mempunyai derajad 2, simpul B
mempunyai derajad 2, simpul C berderajad 3. simpul-simpul F, H, I, J, K, L, N, O
yang semuanya berderajad nol, disebut dengan daun (leaf).
Pohon Biner (Binary Tree)
Pohon biner bisa didefinisikan sebagai suatu kumpulan simpul yang
mungkin kosong atau mempunyai akar dan dua subpohon yang saling terpisah
yang disebut dengan subpohon kiri dan sub pohon kanan. Subpohon disebut juga
sebagai cabang. Karakteristik dari pohon biner ialah bahwa setiap simpul paling
banyak hanya mempunyai dua buah anak. Dengan kata lain derajat tertinggi dari
sebuah pohon biner adalah dua.
Pengertian daun, root, level, tinggi dan derajad yang berlaku pada pohon
juga berlaku pada binary tree. Penyajian binary tree pada komputer di gunakan
double link list
Deklarasi Pohon Biner
Setiap simpul pada pohon biner selalu berisi dua buah pointer yang
menunjuk ke cabang kiri dan cabang kanan dengan melihat hal tersebut maka
struktur double link list sangat cocok untuk di terapkan di dalam tree ini. Gambar
7.3 merupakan penyajian pohon biner menggunakan double link list.
Deklarasi Double Linked List di dalam Pascal :
Type
Tree = ^Simpul
Simpul = Record
Info : Tipe Data;
Kiri : Tree;
Kanan : Tree;
End;
Setiap simpul pada pohon biner selalu berisi dua buah pointer yang
menunjuk ke cabang kiri dan cabang kanan dengan melihat hal tersebut maka
struktur double link list sangat cocok untuk di terapkan di dalam tree ini. Gambar
7.3 merupakan penyajian pohon biner menggunakan double link list.
Deklarasi Double Linked List di dalam Pascal :
Type
Tree = ^Simpul
Simpul = Record
Info : Tipe Data;
Kiri : Tree;
Kanan : Tree;
End;
Membuat Pohon Biner
Untuk membuat pohon biner, terdapat aturan dalam penempatan simpulnya.
Berikut ini merupakan algoritma penempatan sebuah simpul dalam pohon biner :
“Simpul yang berisi informasi yang nilainya lebih besar dari simpul
diatasnya akan ditempatkan sebagai cabang kanan dan jika lebih kecil akan
ditempatkan di cabang kiri.”
Sebagai contoh jika kita akan membentuk pohon biner dari untai
‘HKACBLJ’ maka pohon biner
Untuk membuat pohon biner, terdapat aturan dalam penempatan simpulnya.
Berikut ini merupakan algoritma penempatan sebuah simpul dalam pohon biner :
“Simpul yang berisi informasi yang nilainya lebih besar dari simpul
diatasnya akan ditempatkan sebagai cabang kanan dan jika lebih kecil akan
ditempatkan di cabang kiri.”
Sebagai contoh jika kita akan membentuk pohon biner dari untai
‘HKACBLJ’ maka pohon biner
Sebuah pohon biner memiliki operasi traversal yaitu suatu kunjungan pada
suatu simpul tepat satu kali. Dengan melakukan kunjungan lengkap kita akan
memperoleh urutan informasi secara linier yang tersimpan di dalam pohon biner.
Terdapat tiga jenis kunjungan pada pohon biner, yaitu :
1. PREORDER
Kunjungan jenis ini mempunyai urutan kunjungan sebagai berikut :
- Cetak isi simpul yang dikunjungi.
- Kunjungi cabang kiri.
- Kunjungi cabang kanan.
Dari gambar 7.4 jika kita melakukan traversal secara PREORDER pada
pohon biner tersebut maka akan menghasilkan untai : ‘HACBKJL’.
Prosedur untuk melakukan traversal secara PREORDER adalah sebagai
berikut :
Procedure PREORDER(Temp : Tree);
Begin
If Temp <> NIL Then
Begin
Write(Temp^.Info,’ ‘); {Cetak isi simpul}
PREORDER(Temp^.Kiri); {Kunjungi cabang kiri}
PREORDER(Temp^.Kanan); {Kunjungi cabang kanan}
End;
End;
2. INORDER
Kunjungan jenis ini mempunyai urutan kunjungan sebagai berikut :
- Kunjungi cabang kiri.
- Cetak isi simpul yang dikunjungi.
- Kunjungi cabang kanan.
Dari gambar 7.4 jika kita melakukan traversal secara INORDER pada pohon
biner tersebut maka akan menghasilkan untai : ‘ABCHJKL’.
Prosedur untuk melakukan traversal secara INORDER adalah sebagai
berikut:
Procedure INORDER(Temp : Tree);
Begin
If Temp <> NIL Then
Begin
INORDER(Temp^.Kiri); {Kunjungi cabang kiri}
Write(Temp^.Info,’ ‘); {Cetak isi simpul}
INORDER(Temp^.Kanan); {Kunjungi cabang kanan}
End;
End;
3. POSTORDER
Kunjungan jenis ini mempunyai urutan kunjungan sebagai berikut :
- Kunjungi cabang kiri.
- Kunjungi cabang kanan.
- Cetak isi simpul yang dikunjungi.
Dari gambar 7.4 jika kita melakukan travarsal secara POSTORDER pada
pohon biner tersebut maka akan menghasilkan untai : ‘BCAJLKH’.
Prosedur untuk melakukan traversal secara POSTORDER adalah sebagai
berikut:
Procedure POSTORDER(Temp : Tree);
Begin
If Temp <> NIL Then
Begin
POSTORDER(Temp^.Kiri); {Kunjungi cabang kiri}
POSTORDER(Temp^.Kanan); {Kunjungi cabang kanan}
Write(Temp^.Info,’ ‘); {Cetak isi simpul}
End;
End;
Dalam pengembangan nantinya, tiga jenis kunjungan ini dapat digunakan
sebagai pencarian notasi infix, postfix dan prefix. Kunjungan Preorder untuk
suatu simpul tepat satu kali. Dengan melakukan kunjungan lengkap kita akan
memperoleh urutan informasi secara linier yang tersimpan di dalam pohon biner.
Terdapat tiga jenis kunjungan pada pohon biner, yaitu :
1. PREORDER
Kunjungan jenis ini mempunyai urutan kunjungan sebagai berikut :
- Cetak isi simpul yang dikunjungi.
- Kunjungi cabang kiri.
- Kunjungi cabang kanan.
Dari gambar 7.4 jika kita melakukan traversal secara PREORDER pada
pohon biner tersebut maka akan menghasilkan untai : ‘HACBKJL’.
Prosedur untuk melakukan traversal secara PREORDER adalah sebagai
berikut :
Procedure PREORDER(Temp : Tree);
Begin
If Temp <> NIL Then
Begin
Write(Temp^.Info,’ ‘); {Cetak isi simpul}
PREORDER(Temp^.Kiri); {Kunjungi cabang kiri}
PREORDER(Temp^.Kanan); {Kunjungi cabang kanan}
End;
End;
2. INORDER
Kunjungan jenis ini mempunyai urutan kunjungan sebagai berikut :
- Kunjungi cabang kiri.
- Cetak isi simpul yang dikunjungi.
- Kunjungi cabang kanan.
Dari gambar 7.4 jika kita melakukan traversal secara INORDER pada pohon
biner tersebut maka akan menghasilkan untai : ‘ABCHJKL’.
Prosedur untuk melakukan traversal secara INORDER adalah sebagai
berikut:
Procedure INORDER(Temp : Tree);
Begin
If Temp <> NIL Then
Begin
INORDER(Temp^.Kiri); {Kunjungi cabang kiri}
Write(Temp^.Info,’ ‘); {Cetak isi simpul}
INORDER(Temp^.Kanan); {Kunjungi cabang kanan}
End;
End;
3. POSTORDER
Kunjungan jenis ini mempunyai urutan kunjungan sebagai berikut :
- Kunjungi cabang kiri.
- Kunjungi cabang kanan.
- Cetak isi simpul yang dikunjungi.
Dari gambar 7.4 jika kita melakukan travarsal secara POSTORDER pada
pohon biner tersebut maka akan menghasilkan untai : ‘BCAJLKH’.
Prosedur untuk melakukan traversal secara POSTORDER adalah sebagai
berikut:
Procedure POSTORDER(Temp : Tree);
Begin
If Temp <> NIL Then
Begin
POSTORDER(Temp^.Kiri); {Kunjungi cabang kiri}
POSTORDER(Temp^.Kanan); {Kunjungi cabang kanan}
Write(Temp^.Info,’ ‘); {Cetak isi simpul}
End;
End;
Dalam pengembangan nantinya, tiga jenis kunjungan ini dapat digunakan
sebagai pencarian notasi infix, postfix dan prefix. Kunjungan Preorder untuk