• Tidak ada hasil yang ditemukan

BAB VII

B. POKOK-POKOK ISI 1. Jenis – Jenis Tree

• Full Binary Tree (Pohon Biner Penuh) adalah pohon biner yang setiap nodenya pasti memiliki 0 atau 2 node anak

• Perfect Binary Tree (Pohon Biner Sempurna) adalah pohon biner yang semua node leafnya berada pada kedalaman yang sama dari node root. Juga disebut sebagai Complete Binary Tree (Pohon Biner Lengkap).

• Skewed Binary Tree adalah binary tree yang semua nodenya (kecuali leaf) hanya memiliki satu child

2. Beberapa Istilah Pada Pohon Biner

• Size (ukuran): jumlah total node yang terdapat pada pohon biner tersebut.

• Depth (kedalaman): panjang jalur yang menghubungkan sebuah node sampai ke node anaknya yang paling ujung (leaf). Depth biasa juga disebut height.

3. Deklarasi Tree

• Karena tree tersusun oleh node-node, maka yang perlu kita deklarasikan adalah komponen node itu sendiri.

• Dalam contoh dibawah, akan kita namai Node.

• Sebelumnya perlu kita lihat bahwa untuk mewujudkan implementasi node ke dalam bahasa pemrograman, diperlukan sebuah struktur yang memiliki susunan berikut ini:

• Variabel data digunakan untuk menyimpan nilai angka node tersebut, sedangkan kiri dan kanan, bertipe pointer, masing-masing mewakili vektor yang akan menunjuk ke node anak kiri dan kanan

4. Inisialisasi Tree

• Untuk pertama kali, saat kita akan membuat sebuah pohon biner, asumsi awal adalah pohon itu belum bertumbuh, belum memiliki node sama sekali, sehingga masih kosong.

Oleh karena itu perlu kita tambahkan kode berikut pada baris awal fungsi Main:

• Kita mendeklarasikan sebuah pointer yang akan menunjuk ke akar pohon yang kita buat, dengan nama *pohon.

• Pointer ini ditujukan untuk menunjuk struktur bertipe Node, yang telah dibuat pada bagian 1. Karena pohon tersebut sama sekali belum memiliki node, maka pointer

*pohon ditunjukkan ke NULL.

5. Menambahkan Node Pada Tree

Karena pohon yang kita buat merupakan sebuah pohon biner, maka untuk menambahkan sebuah node, secara otomatis penambahan tersebut mengikuti aturan penambahan node pada pohon biner :

• Jika pohon kosong, maka node baru ditempatkan sebagai akar pohon.

• Jika pohon tidak kosong, maka dimulai dari node akar, dilakukan proses pengecekan berikut:

a. Jika nilai node baru lebih kecil dari nilai node yang sedang dicek, maka lihat ke kiri node tersebut. Jika kiri node tersebut kosong (belum memiliki kiri), maka node baru menjadi kiri node yang sedang dicek. Seandainya kiri node sudah terisi, lakukan kembali pengecekan a dan b terhadap node kiri tersebut.

Pengecekan ini dilakukan seterusnya hingga node baru dapat ditempatkan.

b. Jika nilai node baru lebih besar dari nilai node yang sedang dicek, maka lihat ke kanan node tersebut. Jika kanan node tersebut kosong (belum memiliki kanan), maka node baru menjadi kanan node yang sedang dicek. Seandainya kanan node sudah terisi, lakukan kembali pengecekan a dan b terhadap node kanan tersebut.

Pengecekan ini dilakukan seterusnya hingga node baru dapat ditempatkan.

• Proses penambahan ini diimplementasikan secara rekursif pada fungsi berikut:

• Variabel **root menunjukkan node mana yang sedang dicek saat ini, untuk itu saat pemanggilan fungsi ini, variabel **root kita beri nilai pointer yang menunjuk ke node akar, yaitu pohon.

6. Membaca dan Menampilkan Node pada Tree (Traverse)

• Traverse adalah mengunjungi seluruh node-node pada tree, masing-masing sekali.

Hasilnya adalah urutan informasi secara linear yang tersimpan dalam tree.

• Ada tiga cara traverse,yaitu PreOrder, InOrder, dan PostOrder. Semua kunjungan diawali dengan mengunjungi akar pohon.

• Karena proses kunjungan ini memerlukan perulangan proses yang sama namun untuk depth (kedalaman) yang berbeda, maka ketiganya diimplementasikan dengan fungsi rekursif.

a. Kunjungan Pre-Order

• Pada metode kunjungan Pre-Order node root di kunjungi paling pertama kali, kemudian subtree sebelah kiri dan di lanjut ke subtree sebelah kanan.

• Dimulai dari A, karena A merupakan root maka yang pertama di kunjungi adalah A, kemudian pindah ke subtree sebelah kiri yaitu B, karena B adalah root maka B yang di kunjungi, kemudian ke sebelah kiri yaitu D, karena D tidak mempunyai subtree maka D yang di kunjungi, dan selanjutnya ke sebelah kanan yaitu E dan seterusnya sampai beres. Sehingga di dapat hasil akhir seperti berikut:

b. Kunjungan Pre-Order

• Pada metode kunjungan In-Order subtree sebelah kiri yang pertama di kunjungi, kemudian mengunjungi root, dan selanjutnya subtree sebelah kanan.

• Di mulai dari A, kemudian pindah ke kiri (subtree B). Karena subtree juga memiliki child (D dan E), maka proses yang sama di lakukan juga seperti yang sebelumnya yaitu mengunjungi D terlebih dahulu, karena D tidak mempunyai subtree lagi maka yang pertama di kunjungi adalah D, kemudian lanjut ke D, dan kemudian ke E.

Karena E tidak mempunyai subtree jadi kunjungan di lanjut lagi ke atasnya. Sehingga hasil akhir kunjungannya adalah:

c. Kunjungan Post-Order

• Pada metode kunjungan Post-Order, node root di kunjungi paling akhir, pertama yang di kunjungi adalah subtree sebelah kiri, kemudian subtree sebelah kanan, dan terakhir kunjungi root.

• Di mulai dari A, karena A dalah root maka pindah kesebelah kiri yaitu B, karena B masih mempunyai subtree maka pindah ke subtree dari node B yang sebelah kiri yaitu D, kemudian ke sebelah kanannya yaitu E, dan di lanjut ke B. Sehingga hasil akhirnya adalah sebagai berikut:

• Variabel **root pada setiap fungsi diatas menunjukkan node mana yang sedang dikunjungi saat ini, untuk itu saat pemanggilan, variabel **root kita beri nilai pointer yang menunjuk ke node akar, yaitu pohon.

Contoh Program

C. RANGKUMAN

Pohon (Tree) termasuk struktur non linear yang didefinisikan sebagai data yang terorganisir dari suatu sistem informasi cabang yang saling terkait. Pohon atau Tree adalah salah satu bentuk Graph terhubung yang tidak mengandung sirkuit. Karena merupakan Graph terhubung, maka pada pohon (tree) selalu terdapat path atau jalur yang menghubungkan setiap simpul dalam dua pohon. Pohon (tree) dapat juga didefinisikan sebagai kumpulan elemen yang salah satu elemennya disebut dengan akar (root) dan sisa elemen lain (simpul) yang terpecah menjadi sejumlah himpunan yang saling tidak berhubungan dengan subpohon (subtree) atau cabang.

Sebagai tambahan materi untuk pokok bahasan ini, silahkan diakses dan dipraktekan kembali materi pada video pembelajaran berikut https://youtu.be/6POtJL_AcVY.

D. LATIHAN

• Silahkan kerjakan program dibawah ini pada laptop masing-masing

• Screenshoot program dan hasil pada ms word → pdf

• Submit ms word ke LMS

Dokumen terkait