Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Binary Trees By : Fitroh Amaluddin & Galih Wasis W. Kind of Binary Tree Un/Balance Tree Binary Tree Operation Order Tree.

Presentasi serupa


Presentasi berjudul: "Binary Trees By : Fitroh Amaluddin & Galih Wasis W. Kind of Binary Tree Un/Balance Tree Binary Tree Operation Order Tree."— Transcript presentasi:

1 Binary Trees By : Fitroh Amaluddin & Galih Wasis W. Kind of Binary Tree Un/Balance Tree Binary Tree Operation Order Tree

2 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 0 atau lebih node anak (child). Sebuah node yang memiliki node anak disebut node induk (parent). Sebuah node anak hanya memiliki satu node induk. DEFINISI

3 Binary Trees adalah sebuah tree yang pada masing- masing simpulnya hanya dapat memiliki maksimum 2 (dua) simpul anak. Tidak boleh lebih. P C C

4  Root : satu-satunya node khusus dalam tree yang tak punya node diatas.  Parent : node satu level di atas suatu node.  Child : node satu level di bawah suatu node.  Size : banyaknya node dalam suatu tree.  Level : banyaknya tingkatan dalam suatu tree.  Leaf : node-node dalam tree yang tak memiliki node dibawah. Istilah Umum

5

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

7 Complete Binary Tree mirip dengan Full Binary Tree, namun tiap subtree boleh memiliki panjang path yang berbeda. Node kecuali leaf memiliki 0 atau 2 child. Complete Binary Tree

8  yaitu Binary Tree yang semua nodenya (kecuali leaf) hanya memiliki satu child. Skewed Binary Tree

9 Almost Complete Binary Tree (Pohon Biner Hampir Lengkap) adalah pohon biner yang setiap nodenya dapat memiliki 0 node anak, atau memiliki kiri, atau memiliki kanan. Almost Complete Binary Tree

10 Balance a bc defg hij A balanced binary tree a b c d e f gh ij An unbalanced binary tree

11 Binary Insert Tree adalah Binary Tree dengan sifat bahwa semua left child harus lebih kecil daripada right child dan parentnya. Juga semua right child harus lebih besar dari left child serta parentnya. Binary Insert

12

13 Binary Search Tree adalah Binary Tree dengan sifat bahwa semua left child harus lebih kecil daripada right child dan parentnya. Juga semua right child harus lebih besar dari left child serta parentnya. Binary Search

14 Binary Delete Binary Delete Tree adalah Binary Tree dengan sifat jika proses delete berpengaruh pada posisi node tersebut dilakukan rotasi supaya tetap menjadi Binary Search Tree. Contoh : - Jika node parent dihapus, maka right child yang yang tidak memiliki left child,maka right child tersebut akan di pindah ke atas sebagai parent. - Jika right child mempunyai left child, maka left childnya akan pindah sebagai parent dari node yang berada diatasnya.

15 Ada 3 urutan dasar yang dapat digunakan untuk mengunjungi pohon, yaitu : 1.PreOrder 2.InOrder 3.PostOrder Order Tree

16 PostOrder: * + a / b c – d * e f InOrder: a + b / c * d – e * f PreOrder: a b c / + d e f * - *

17 #include #include #include #define nil NULL struct nod { struct nod*left; char data; struct nod *right; }; typedef struct nod NOD; typedef NOD POKOK; NOD *NodBaru(char item) { NOD *n; n=(NOD *)malloc(sizeof(NOD)); if(n != NULL) { n->data=item; n->left=NULL; n->right=NULL; }return n; } void BinaPokok(POKOK **T) { *T=NULL; } bool PokokKosong(POKOK *T) { return ((bool)(T==NULL)); } void TambahNod(NOD **p, char item) { NOD *n; n=NodBaru(item); *p=n; } void preOrder(POKOK *T) { if(!PokokKosong(T)) { cout data; preOrder(T->left); preOrder(T->right); } Listing Program // Read More

18 void inOrder(POKOK *T) { if(!PokokKosong(T)) { inOrder(T->left); cout data; inOrder(T->right); } void postOrder(POKOK *T) { if(!PokokKosong(T)) { postOrder(T->left); postOrder(T->right); cout data; } //Program utama int main() { POKOK *tampil; char buah; BinaPokok(&tampil); TambahNod(&tampil, buah='M'); TambahNod(&tampil->left, buah='E'); TambahNod(&tampil->left->right, buah='I'); TambahNod(&tampil->right, buah='L'); TambahNod(&tampil->right->right, buah='O'); TambahNod(&tampil->right->right->left, buah='D'); cout<<"Tampilan secara PreOrder : "; preOrder(tampil); cout<

19

20 Terima Kasih

21 void preOrder(POKOK *T) { if(!PokokKosong(T)) { cout data; preOrder(T->left); preOrder(T->right); } Kunjungan Pre-Order. 1. Cetak isi (data) node yang sedang dikunjungi 2. Kunjungi kiri node tersebut, - Jika kiri tidak kosong (NOT NULL) mulai lagi dari langkah pertama, terapkan untuk kiri tersebut. - Jika kiri kosong (NULL), lanjut ke langkah ketiga. 3. Kunjungi kanan node tersebut, - Jika kanan tidak kosong (NOT NULL) mulai lagi dari langkah pertama, terapkan untuk kanan tersebut. - Jika kanan kosong (NULL), proses untuk node ini selesai, tuntaskan proses yang sama untuk node yang dikunjungi sebelumnya. // Back

22 Kunjungan In-Order. 1. 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. Cetak isi (data) node yang sedang dikunjungi 3. Kunjungi kanan node tersebut, - Jika kanan bukan kosong (tidak NULL) mulai lagi dari langkah pertama, terapkan untuk kanan tersebut. - Jika kanan kosong (NULL), proses untuk node ini selesai, tuntaskan proses yang sama untuk node yang dikunjungi sebelumnya. void inOrder(POKOK *T) { if(!PokokKosong(T)) { inOrder(T->left); cout data; inOrder(T->right); }

23 // Back Kunjungan Post-Order. Kunjungan pre-order dilakukan mulai dari akar pohon, dengan urutan: 1. 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. void postOrder(POKOK *T) { if(!PokokKosong(T)) { postOrder(T->left); postOrder(T->right); cout data; }

24 Post Order Kunjungan pre-order dilakukan mulai root pohon, dengan urutan: 1.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. 3.Kode Program Lengkap Berikut ini kode program keseluruhan, termasuk menu tampilan, di mana di dalamnya terdapat Deklarasi Tree, Inisialisasi Tree, Penambahan Node, dan Pembacaaan serta Menampilkan Node dengan 3 macam kunjungan. Kode ditulis dengan C

25 In Order 1.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.Cetak isi (data) node yang sedang dikunjungi 3.Kunjungi kanan node tersebut, - Jika kanan bukan kosong (tidak NULL) mulai lagi dari langkah pertama, terapkan untuk kanan tersebut. - Jika kanan kosong (NULL), proses untuk node ini selesai, tuntaskan proses yang sama untuk node yang dikunjungi sebelumnya.

26 Kunjungan pre-order dilakukan mulai dari akar pohon, dengan urutan: 1.Cetak isi (data) node yang sedang dikunjungi 2.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, Jika kanan bukan kosong (tidak NULL) mulai lagi dari langkah pertama, terapkan untuk kanan tersebut. Jika kanan kosong (NULL), proses untuk node ini selesai, tuntaskan Pre Order


Download ppt "Binary Trees By : Fitroh Amaluddin & Galih Wasis W. Kind of Binary Tree Un/Balance Tree Binary Tree Operation Order Tree."

Presentasi serupa


Iklan oleh Google