You are on page 1of 7

Materi Kuliah - Struktur Data

TREE STRUCTURE (Struktur Pohon)


Dalam ilmu komputer, tree adalah sebuah struktur data yang secara bentuk menyerupai sebuah pohon, yang terdiri dari serangkaian node (simpul) yang saling berhubungan. Node-node tersebut dihubungkan oleh sebuah vektor. Setiap node dapat memiliki atau lebih node anak (child). Sebuah node yang memiliki node anak disebut node induk (parent). Sebuah node anak hanya memiliki satu node induk. Sesuai konvensi ilmu komputer, tree bertumbuh ke ba!ah, tidak seperti pohon di dunia nyata yang tumbuh ke atas. Dengan demikian node anak akan digambarkan berada di ba!ah node induknya. Node yang berada di pangkal tree disebut node root (akar), sedangkan node yang berada paling u"ung pada piramida tree disebut node lea# (daun). $lustrasi %ree&

Binary Tree (Pohon Biner) Dalam mata kuliah struktur data, secara khusus akan dipela"ari mengenai pohon biner. 'ohon biner adalah sebuah tree yang pada masing-masing simpulnya hanya dapat memiliki maksimum ( (dua) simpul anak. %idak boleh lebih. 'ada pohon biner, umumnya kedua node anak disebut dengan posisinya, yaitu kiri dan kanan. )eberapa istilah pada pohon biner& Si*e (ukuran)& "umlah total node yang terdapat pada pohon biner tersebut. Depth (kedalaman)& pan"ang "alur yang menghubungkan sebuah node sampai ke node anaknya yang paling u"ung (lea#). Depth biasa "uga disebut height.

S%M$K Mercusuar - ( +

Materi Kuliah - Struktur Data ,ull )inary %ree ('ohon )iner 'enuh) adalah pohon biner yang setiap nodenya pasti memiliki node anak. atau (

'er#ect )inary %ree ('ohon )iner Sempurna) adalah pohon biner yang semua node lea#nya berada pada kedalaman yang sama dari node root. -uga disebut sebagai .omplete )inary %ree ('ohon )iner /engkap) 0lmost .omplete )inary %ree ('ohon )iner 1ampir /engkap) adalah pohon biner yang setiap nodenya dapat memiliki node anak, atau memiliki kiri, atau "ika memiliki kanan harus memiliki kiri. %idak boleh memiliki kanan sa"a. $lustrasi )inary %ree&

Implementasi $mplementasi dalam pemrograman, dalam pokok bahasan ini akan dibicarakan untuk pohon biner sa"a. 0sumsi a!al adalah data yang hendak dimasukkan ke dalam node, bertipe data integer. 1. Deklarasi Tree Karena tree tersusun oleh node-node, maka yang perlu kita deklarasikan adalah komponen node itu sendiri. Dalam contoh diba!ah, akan kita namai No e. Sebelumnya perlu kita lihat bah!a untuk me!u"udkan implementasi node ke dalam bahasa pemrograman, diperlukan sebuah struktur yang memiliki susunan berikut ini&

S%M$K Mercusuar - ( +

Materi Kuliah - Struktur Data

2ariabel data digunakan untuk menyimpan nilai angka node tersebut, sedangkan kiri dan kanan, bertipe pointer, masing-masing me!akili vektor yang akan menun"uk ke node anak kiri dan kanan. !. Inisialisasi Tree 3ntuk pertama kali, saat kita akan membuat sebuah pohon biner, asumsi a!al adalah pohon itu belum bertumbuh, belum memiliki node sama sekali, sehingga masih kosong. 4leh karena itu perlu kita tambahkan kode berikut pada baris a!al #ungsi Main&

Kita mendeklarasikan sebuah pointer yang akan menun"uk ke akar pohon yang kita buat, dengan nama "pohon. 'ointer ini ditu"ukan untuk menun"uk struktur bertipe Node, yang telah dibuat pada bagian +. Karena pohon tersebut sama sekali belum memiliki node, maka pointer "pohon ditun"ukkan ke NU##. $. %enam&ahkan No e Pa a 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& +. (. -ika pohon kosong, maka node baru ditempatkan sebagai akar pohon. -ika pohon tidak kosong, maka dimulai dari node akar, dilakukan proses pengecekan berikut& a. -ika nilai node baru lebih kecil dari nilai node yang sedang dicek, maka lihat ke kiri node tersebut. -ika kiri node tersebut kosong (belum memiliki kiri), maka node baru men"adi kiri node yang sedang dicek. Seandainya kiri node sudah terisi, lakukan kembali pengecekan a dan b terhadap node kiri tersebut. 'engecekan ini dilakukan seterusnya hingga node baru dapat ditempatkan. b. -ika nilai node baru lebih besar dari nilai node yang sedang dicek, maka lihat ke kanan node tersebut. -ika kanan node tersebut kosong (belum memiliki kanan), maka node baru men"adi kanan node yang sedang dicek. Seandainya kanan node sudah terisi, lakukan kembali 5 S%M$K Mercusuar - ( +

Materi Kuliah - Struktur Data pengecekan a dan b terhadap node kanan tersebut. 'engecekan ini dilakukan seterusnya hingga node baru dapat ditempatkan. 'roses penambahan ini diimplementasikan secara rekursi# pada #ungsi berikut&

2ariabel 66root menun"ukkan node mana yang sedang dicek saat ini, untuk itu saat pemanggilan #ungsi ini, variabel 66root kita beri nilai pointer yang menun"uk ke node akar, yaitu pohon.

3ntuk selengkapnya dapat dilihat pada bagian 7, kode program lengkap. '. %em&a(a an %enampilkan No e Pa a Tree 3ntuk membaca dan menampilkan seluruh node yang terdapat pada pohon biner, terdapat 5 macam cara, atau yang biasa disebut kun"ungan (visit). Semua kun"ungan dia!ali dengan mengun"ungi akar pohon. Karena proses kun"ungan ini memerlukan perulangan proses yang sama namun untuk depth (kedalaman) yang berbeda, maka ketiganya diimplementasikan dengan #ungsi rekursi#. a. )un*un+an Pre,-r er. Kun"ungan pre-order dilakukan mulai dari akar pohon, dengan urutan& +. .etak isi ( ata) node yang sedang dikun"ungi (. Kun"ungi kiri node tersebut, - -ika kiri bukan kosong (tidak NU##) mulai lagi dari langkah pertama, terapkan untuk kiri 8 S%M$K Mercusuar - ( +

Materi Kuliah - Struktur Data tersebut. - -ika kiri kosong (NU##), lan"ut ke langkah ketiga. 5. Kun"ungi kanan node tersebut, -ika kanan bukan kosong (tidak NU##) mulai lagi dari langkah pertama, terapkan untuk kanan tersebut. -ika kanan kosong (NU##), proses untuk node ini selesai, tuntaskan proses yang sama untuk node yang dikun"ungi sebelumnya.

&.

)un*un+an In,-r er. +. Kun"ungi kiri node tersebut, - -ika kiri bukan kosong (tidak NU##) mulai lagi dari langkah pertama, terapkan untuk kiri tersebut. - -ika kiri kosong (NU##), lan"ut ke langkah kedua. (. .etak isi ( ata) node yang sedang dikun"ungi 5. Kun"ungi kanan node tersebut, - -ika kanan bukan kosong (tidak NU##) mulai lagi dari langkah pertama, terapkan untuk kanan tersebut. - -ika kanan kosong (NU##), proses untuk node ini selesai, tuntaskan proses yang sama untuk node yang dikun"ungi sebelumnya.

S%M$K Mercusuar - ( +

Materi Kuliah - Struktur Data (. )un*un+an Post,-r er. +. Kun"ungi kiri node tersebut, -ika kiri bukan kosong (tidak NU##) mulai lagi dari langkah pertama, terapkan untuk kiri tersebut. -ika kiri kosong (NU##), lan"ut ke langkah kedua.

(. Kun"ungi kanan node tersebut, -ika kanan bukan kosong (tidak NU##) mulai lagi dari langkah pertama, terapkan untuk kanan tersebut. -ika kanan kosong (NU##), lan"ut ke langkah ketiga.

5. .etak isi ( ata) node yang sedang dikun"ungi. 'roses untuk node ini selesai, tuntaskan proses yang sama untuk node yang dikun"ungi sebelumnya.

2ariabel ""root pada setiap #ungsi diatas menun"ukkan node mana yang sedang dikun"ungi saat ini, untuk itu saat pemanggilan, variabel ""root kita beri nilai pointer yang menun"uk ke node akar, yaitu pohon.

3ntuk selengkapnya dapat dilihat pada bagian 7, kode program lengkap. .. )o e Pro+ram #en+kap )erikut ini kode program keseluruhan, termasuk menu tampilan, di mana di dalamnya terdapat Deklarasi %ree, $nisialisasi %ree, 'enambahan Node, dan 'embacaaan serta Menampilkan Node dengan 9 S%M$K Mercusuar - ( +

Materi Kuliah - Struktur Data 5 macam kun"ungan. Kode ditulis dengan .:: 5. .

S%M$K Mercusuar - ( +

You might also like