tree
DESCRIPTION
TREE. Oleh : Neny silvia Nurhidayah Afny wilujeng Setyorini Ika Khoi run N. Indah Nur alifia. TREE. merupakan salah satu bentuk struktur data tidak linear yang menggambarkan hubungan yang bersifat hierarkis ( hubungan one to many) antara elemen-elemen . - PowerPoint PPT PresentationTRANSCRIPT
TREE
Oleh :
o Neny silvia Nurhidayaho Afny wilujeng Setyorinio Ika Khoirun N.o Indah Nur alifia
TREEo merupakan salah satu bentuk struktur data tidak linear yang menggambarkan
hubungan yang bersifat hierarkis (hubungan one to many) antara elemen-elemen.
o Tree secara bentuk menyerupai sebuah pohon, yang terdiri dari serangkaian Node (simpul) yangsaling berhubungan.
o Sesuai konvensi ilmu komputer, tree bertumbuh ke bawah, tidak sepertipohon di dunia nyata yang tumbuh ke atas
Structur Tree
o Root adalah node yang memiliki hirarki tertinggi. Semua node dapat ditelusuri dari root.
o R ,S dan T adalah Internal Nodeo Level dari sebuah node adalah ukuran jarak node tersebut terhadap akaro X merupakan node induk(parent) dari Y dan Zo Y dan Z merupakan node anak (Child) dari Xo Node yang dibawah Root adalah Subtree(cabang).o leaf (daun) adalah Sebuah node yang tidak memiliki anak.
o Prodecessor : node yang berada diatas node tertentu.o Successor : node yang berada di bawah node tertentu.o Ancestor : seluruh node yang terletak sebelum node tertentu dan
terletak pada jalur yang sama.o Descendant : seluruh node yang terletak sesudah node tertentu
dan terletak pada jalur yang sama.o Parent : predecssor satu level di atas suatu node.o Child : successor satu level di bawah suatu node.o Sibling : node-node yang memiliki parent yang sama dengan suatu
node.o Subtree : bagian dari tree yang berupa suatu node beserta
descendantnya dan memiliki semua karakteristik dari tree tersebut.o Size : banyaknya node dalam suatu tree.o Height : banyaknya tingkatan/level dalam suatu tree.o Root : satu-satunya node khusus dalam tree yang tak punya
predecssor.o Leaf : node-node dalam tree yang tak memiliki seccessor.o Degree : banyaknya child yang dimiliki suatu node.
ISTILAH DALAM TREE
Binary Tree
Suatu tree dimana tiap node hanya boleh memiliki maksimal dua subtree dan kedua subtree tersebut harus terpisah. Pada pohon biner, umumnya kedua node anak disebut dengan posisinya, yaitu Kiri dan kanan.
struct node{ int data; //menyimpan nilai nodestruct node *left;struct node *right;}; // kiri dan kanan bertipe
Deklarasi Treeleft right label
a
cb
a
b c
Jenis binary tree:
o Full Binary Treeo Complete Binary Tree o Incomplete Binary Tree (Unbalanced Tree) o Skewed Binary Tree
Full Binary Tree
Semua node (kecuali leaf) memiliki nol atau 2 anak dan tiap subtree memiliki panjang path yang sama.
Complete Binary Tree
o mirip dengan full binary tree,tapi tiap subtree boleh memiliki panjang path yang berbeda dan tiap node (kecuali leaf) memiliki 2 anak
o Seluruh node pada level N-1 terisi seluruhnya dan pada level N node yangkosong adalah node kanan
Full Binary Tree
Binary tree yang semua nodenya (kecuali leaf) hanya memiliki satu anak.
Operasi-operasi pada Tree
Create: membentuk sebuah tree baru yang kosong.Clear: menghapus semua elemen tree.Empty: mengetahui apakah tree kosong atau tidak.Insert: menambah node ke dalam Tree secara rekursif. Find: mencari node di dalam Tree secara rekursif sampai node tersebut ditemukan dengan menggunakan variable bantuan ketemu. Syaratnya adalah tree tidak boleh kosong.Traverse: yaitu operasi kunjungan terhadap node-node dalam pohon dimana masing-masing node akan dikunjungi sekali.Count: menghitung jumlah node dalam TreeHeight : mengetahui kedalaman sebuah TreeFind Min dan Find Max : mencari nilai terkecil dan terbesar pada TreeChild : mengetahui anak dari sebuah node (jika punya)
Menambahkan Node Pada Tree1. Jika pohon kosong, maka node baru ditempatkan sebagai akar pohon2. 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.
10
3
5
86
Menambahkan node baru nilai 5 :
5
b. Jika nilai node baru lebih besar dari nilai node yang sedang dicek, maka lihat ke kanan nodet ersebut.
• Jika kanan node tersebut kosong (belum memiliki kanan), maka node baru menjadikanan 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
10
3
11
86
Menambahkan node baru nilai 11 :
5 11
Proses penambahan ini diimplementasikan secara rekursif pada fungsi berikut:
Variabel **root menunjukkan node mana yang sedang dicek saat ini, untuk itu saat pemanggilanfungsi ini, variabel **root kita beri nilai pointer yang menunjuk ke node akar, yaitu pohon
Membaca dan Menampilkan Node Pada Tree
Untuk membaca dan menampilkan seluruh node yang terdapat pada pohon biner, terdapat 3 macam cara, atau yang biasa disebut kunjungan (visit).
o Kunjungan Pre-Ordero Kunjungan In-Ordero Kunjungan Post-Order
1.Kunjungan Pre-OrderKunjungan pre-order dilakukan mulai dari akar pohon, dengan urutan:1. Cetak isi (data) node yang sedang dikunjungi2. Kunjungi kiri node tersebut Jika kiri bukan kosong (tidak NULL) mulai lagi dari langkah pertama, terapkan
untuk kiri tersebut. Jika kiri kosong (NULL), lanjut ke langkah ketiga.3. Kunjungi kanan node tersebut,o Jika kanan bukan kosong (tidak NULL ) mulai lagi dari langkah pertama, terapkan
untuk kanan tersebut.o Jika kanan kosong (NULL), proses untuk node ini selesai, tuntaskan proses yang
samauntuk node yang dikunjungi sebelumnya.
2.Kunjungan In-Order1.Kunjungi kiri node tersebut,o Jika kiri bukan kosong (tidak NULL) mulai lagi dari langkah pertama, terapkan
untuk kiritersebut.o Jika kiri kosong (NULL), lanjut ke langkah kedua.2. Cetak isi (data) node yang sedang dikunjungi3. Kunjungi kanan node tersebut,o Jika kanan bukan kosong (tidak NULL) mulai lagi dari langkah pertama, terapkan
untuk kanan tersebut.o Jika kanan kosong (NULL), proses untuk node ini selesai, tuntaskan proses yang
samauntuk node yang dikunjungi sebelumnya.
3.Kunjungan Post-Order1. Kunjungi kiri node tersebut,•Jika kiri bukan kosong (tidak NULL ) mulai lagi dari langkah pertama, terapkan untuk kiri tersebut.•Jika kiri kosong ( NULL), lanjut ke langkah kedua.2. Kunjungi kanan node tersebut,•Jika kanan bukan kosong (tidak NULL ) mulai lagi dari langkah pertama, terapkan untuk kanan tersebut.•Jika kanan kosong (NULL), lanjut ke langkah ketiga.3. Cetak isi (data) node yang sedang dikunjungi. Proses untuk node ini selesai, tuntaskan proses yang sama untuk node yang dikunjungi sebelumnya
GDBHIEFCA
Searching in Tree
Pencarian dilakukan secara rekursif, dimulai dari node root, jika data yang dicari lebih kecil daripada data node root, maka pencarian dilakukan di sub node sebelah kiri, sedangkan jika data yang dicari lebih besar daripada data node root, maka pencarian dilakukan di sub node sebelah kanan, jika data yang dicari sama dengan data suatu node berarti kembalikan node tersebut dan berarti data ditemukan.
Keterangan Searching
Root = 6 dan 8 > 6, maka akan dicari di sub node bagian kanan root.
Root = 10 dan 8 < 10, maka akan dicari di sub node bagian kiri root.
Root = 7 dan 8 > 7, maka akan dicari di sub node bagian kanan root.
Root = 8, berarti 8 = 8, maka akan dikembalikan node tersebut dan dianggap ketemu!
Jumlah Node Tree
Penghitungan jumlah node dalam tree dilakukan dengan cara mengunjungi setiap node, dimulai dari root ke subtree kiri, kemudian ke subtree kanan dan masing-masing node dicatat jumlahnya, dan terakhir jumlah node yang ada di subtree kiri dijumlahkan dengan jumlah node yang ada di subtree kanan ditambah 1 yaitu node root.
Kedalaman (height) Node Tree
Penghitungan kedalaman dihitung dari setelah root, yang dimulai dari subtree bagian kiri kemudian ke subtree bagian kanan. Untuk masing-masing kedalaman kiri dan kanan akan dibandingkan, jika ternyata subtree kiri lebih dalam, maka yang dipakai adalah jumlah kedalaman subtree kiri, demikian sebaliknya. Hal ini didasarkan pada prinsip binary tree, dimana tree-nya selalu memiliki maksimal 2 node anak.
Sekian