1 / 26

Binary Trees

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

bart
Download Presentation

Binary Trees

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. DEFINISI 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.

  3. DEFINISI 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. Istilah Umum • Root : satu-satunya node khususdalam tree yang takpunya node diatas. • Parent : node satu level diatassuatu node. • Child : node satu level dibawahsuatu node. • Size : banyaknya node dalamsuatu tree. • Level : banyaknyatingkatandalamsuatu tree. • Leaf : node-node dalam tree yang takmemiliki node dibawah.

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

  6. Complete Binary Tree 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.

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

  8. Almost Complete Binary Tree 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.

  9. A balanced binary tree An unbalanced binary tree a a b c b c e d e f g d f h i j g h i j Balance

  10. Binary Insert 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.

  11. Binary Insert

  12. Binary Search 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.

  13. Binary Delete Binary Delete Tree adalah Binary Tree dengansifatjikaproses delete berpengaruhpadaposisi node tersebutdilakukanrotasisupayatetapmenjadi Binary Search Tree. Contoh : - Jika node parent dihapus, maka right child yang yangtidakmemiliki left child,maka right child tersebutakandipindahkeatassebagai parent. - Jika right child mempunyai left child, maka left childnyaakanpindahsebagai parent dari node yang beradadiatasnya.

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

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

  16. Listing Program 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<<" "<<T->data; preOrder(T->left); preOrder(T->right); } } #include<iostream.h>#include<conio.h>#include<malloc.h> #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;} // Read More

  17. void inOrder(POKOK *T) { if(!PokokKosong(T)) { inOrder(T->left); cout<<" "<<T->data; inOrder(T->right); } } void postOrder(POKOK *T) { if(!PokokKosong(T)) { postOrder(T->left); postOrder(T->right); cout<<" "<<T->data; } } // Read More //Program utamaint 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<<"TampilansecaraPreOrder : "; preOrder(tampil); cout<<endl;cout<<"TampilansecaraInOrder : ";inOrder(tampil); cout<<endl;cout<<"TampilansecaraPostOrder : ";postOrder(tampil); cout<<endl; cout<<endl; getch(); return 0; } // Read More

  18. M E L I O D

  19. Terima Kasih

  20. void preOrder(POKOK *T) { if(!PokokKosong(T)) { cout<<" "<<T->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

  21. void inOrder(POKOK *T) { if(!PokokKosong(T)) { inOrder(T->left); cout<<" "<<T->data; inOrder(T->right); } } 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. // Back

  22. void postOrder(POKOK *T) { if(!PokokKosong(T)) { postOrder(T->left); postOrder(T->right); cout<<" "<<T->data; } } • 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. // Back

  23. Post Order Kunjungan pre-order dilakukan mulai root pohon, dengan urutan: 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. Kunjungi kanan node tersebut, Jika kanan bukan kosong (tidak NULL) mulai lagi dari langkah pertama, terapkan untuk kanan tersebut. 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++ 3.00.

  24. In Order • 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. • Cetak isi (data) node yang sedang dikunjungi • 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.

  25. Pre Order Kunjungan pre-order dilakukanmulaidariakarpohon, denganurutan: Cetakisi (data) node yang sedangdikunjungi Kunjungikiri node tersebut, Jikakiribukankosong (tidak NULL) mulailagidarilangkahpertama, terapkanuntukkiritersebut. ¬Jikakirikosong (NULL), lanjutkelangkahketiga. Kunjungikanan node tersebut, Jikakananbukankosong (tidak NULL) mulailagidarilangkahpertama, terapkanuntukkanantersebut. Jikakanankosong (NULL), prosesuntuk node iniselesai, tuntaskan

More Related