tree

23
TREE Oleh : o Neny silvia Nurhidayah o Afny wilujeng Setyorini o Ika Khoirun N. o Indah Nur alifia

Upload: lysa

Post on 15-Jan-2016

45 views

Category:

Documents


2 download

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 Presentation

TRANSCRIPT

Page 1: TREE

TREE

Oleh :

o Neny silvia Nurhidayaho Afny wilujeng Setyorinio Ika Khoirun N.o Indah Nur alifia

Page 2: TREE

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

Page 3: TREE

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.

Page 4: TREE

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

Page 5: TREE
Page 6: 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

Page 7: TREE

Jenis binary tree:

o Full Binary Treeo Complete Binary Tree o Incomplete Binary Tree (Unbalanced Tree) o Skewed Binary Tree

Page 8: TREE

Full Binary Tree

Semua node (kecuali leaf) memiliki nol atau 2 anak dan tiap subtree memiliki panjang path yang sama.

Page 9: TREE

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

Page 10: TREE

Full Binary Tree

Binary tree yang semua nodenya (kecuali leaf) hanya memiliki satu anak.

Page 11: TREE

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)

Page 12: TREE

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

Page 13: TREE

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

Page 14: TREE

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

Page 15: TREE

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

Page 16: TREE

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.

Page 17: TREE

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.

Page 18: TREE

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

Page 19: TREE

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.

Page 20: TREE

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!

Page 21: TREE

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.

Page 22: TREE

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.

Page 23: TREE

Sekian