PROGRAM STUDI SISTEM INFORMASIS 1 MATA KULIAH ALGORITMAN































































- Slides: 63
PROGRAM STUDI SISTEM INFORMASI-S 1 MATA KULIAH ALGORITMAN DAN PEMROGRAMAN II TREE -personal branding. Suharnawi, M. Kom, Lalang Erawan, M. Kom. , Setyo Budi, M. Kom. 2020 <a href='https: //www. freepik. com/free-photos-vectors/background'>Background vector created by freepik - www. freepik. com</a>
PROGRAM STUDI SISTEMINFORMASI Capaian Pembelajaran Mahasiswa mampu memahami tree pada struktur data. Kemampuan Akhir yang Diharapkan Memahami tentang stuktur pohon serta mampu untuk membaca pohon dan menggambar pohon biner. MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
MATA KULIAH PROGRAM STUDI ALGORITMA DAN PEMROGRAMAN II SISTEM INFORMASI leaves Real World branches root
PROGRAM STUDI SISTEM INFORMASI Computer Scientist’s View root MATA KULIAH ALGORITMA DAN PEMROGRAMAN II leaves branches nodes
PROGRAM STUDI SISTEM INFORMASI Introduction Link list Isi data alamat stack Queue MATA KULIAH ALGORITMA DAN PEMROGRAMAN II • Linked List, Stack, Queue merupakan struktur data yang bersifat linear • Tree merupakan struktur data tidak linear digambarkan dengan hubungan yang bersifat hirarkis antar satu elemen(Teddy Marcus, 2006). • Tree merupakan sebuah struktur dalam bentuk menyerupai sebuah pohon, terdiri dari rangkaian node (simpul) yang saling berhubungan. • Tree merupakan salah satu bentuk implementasi banyak linked list yang biasanya digunakan untuk menggambarkan hubungan yang bersifat hirarki antar elemen-elemen. • Contoh penggunaan struktur tree : • Hasil pertandingan yg berbentuk turnamen • Struktur organisasi sebuah perusahaan • Silsilah keluarga • Struktur File
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II Introduction Anatomy Tree • • Node-node dihubungkan oleh sebuah vektor/garis vektor. Setiap node dapat memiliki nol atau lebih node anak (child). Node yang berada di pangkal tree disebut node root (akar) Node yang memiliki node anak disebut node induk (parent). Sebuah node anak hanya memiliki satu node induk. Tree tumbuh ke bawah Node anak akan digambarkan berada di bawah node induknya. Node yang berada paling ujung pada piramida tree disebut node leaf (daun).
PROGRAM STUDI SISTEM INFORMASI Ilustrasi MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
MATA KULIAH PROGRAM STUDI ALGORITMA DAN PEMROGRAMAN II SISTEM INFORMASI Terminologi A root C B Subtree D E F G • Keterangan : • Ancestor (F) = C, A & B, A • Descendant(C) = F, G • Parent (D) = B • Child (A) = B, C • Sibling (F) = G • Size = 7 • Height =3 • Root adalah node yang memiliki hirarki tertinggi = A • Leaf/eksternal nodes = D, E, F, G • Degree = 2 • Subtree/Subtree (pohon anak) adalah beberapa node yang tersusun hirarki yang ada dibawah root. = B, D, E • internal nodes=B, A, C
MATA KULIAH PROGRAM STUDI ALGORITMA DAN PEMROGRAMAN II SISTEM INFORMASI Linked list vs Tree • Linked list linear/serial data • Contoh : nama-nama mahasiswa dalam satu kelas. Direktur Ani • Tree non linear/hierachically data • Contoh : tingkatan pegawai dalam perusahaan. No NIM Nama 1 A 12. 2019. 00001 HUDIANA 2 A 12. 2018. 00023 HINDUN 3 A 11. 2019. 00322 MICHAEL LONGSRUMBE 4 A 11. 2019. 09923 YUNUS Manajer 1 Anton Supervisor Edo Manajer 2 Antoni Superviso endang Superviso edward
PROGRAM STUDI SISTEM INFORMASI Binary Tree MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI Contoh Penggunaan Tree • Mis. : Struktur organisasi sebuah perusahaan Sumber : http: //www. orgcharting. com/elements-organizational-structure/ MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI Contoh Penggunaan Tree MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI Contoh Penggunaan Tree � Mis. : File system MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI Contoh Penggunaan Tree MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI Jenis Tree • Binary Tree • Full Binary Tree • Perfect Binary Tree • Skewed Binary Tree MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II Jenis Tree-> Binary Tree § Binary Tree : Binary tree yang tiap nodenya memiliki satu root dan dua child dan harus memiliki panjang yang sama
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II Binary Tree • Sebuah pengorganisasian secara hirarki dari beberapa buah simpul, dimana masing-masing simpul tidak mempunyai anak lebih dari 2. • Simpul yang berada di bawah sebuah simpul dinamakan anak dari simpul tersebut. • Simpul yang berada di atas sebuah simpul dinamakan induk dari simpul tersebut.
MATA KULIAH PROGRAM STUDI ALGORITMA DAN PEMROGRAMAN II SISTEM INFORMASI Binary Tree Tiap node pada binary tree adalah subtree kiri dan subtree kanan. Setiap Subtree adalah juga tree. Right child of T Left child of T
PROGRAM STUDI SISTEM INFORMASI Level • Tree dengan level 3 MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI Binary Tree • Setiap node dalam Tree mempunyai maksimum dua anak MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II Binary Tree • Binary tree adalah tree di mana setiap nodes memiliki maksimum 2 anak • Full Binary tree adalah binary tree di mana setiap nodes memiliki anak 0 atau anak 2.
PROGRAM STUDI SISTEM INFORMASI Full Binary Tree ● ● ● ● (# external nodes ) = (# internal nodes) + 1 (# nodes at level i) ≤ 2 i (# external nodes) ≤ 2(height) ≥ log 2(# external nodes) (height) ≥ log 2(# nodes) - 1 (height) ≤ (# internal nodes) = ((# nodes) - 1)/2 Jika tinggi = k, maka #node = 2 k+1 - 1 MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
MATA KULIAH PROGRAM STUDI ALGORITMA DAN PEMROGRAMAN II SISTEM INFORMASI Height dari Binary Tree • Height/kedalaman tree adalah maksimum level dari tree. • Misal TN adalah subtree dengan root N dan TL adalah root subtree kiri dan TR adalah root dan subtree kanan. height(N) = height(TN) = { -1 1+max( height(TL), height(TR)) if TN is empty if TN not empty
PROGRAM STUDI SISTEM INFORMASI Height dari Binary Tree MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI Densitas Binary Tree • Jumlah node di tiap level berada pada range tertentu. MATA KULIAH ALGORITMA DAN PEMROGRAMAN II • Level 0, terdapat 1 node yaitu root. • Level 1, mempunyai 1 atau 2 node • Level k, jumlah node antara 1 to 2 k • Densitas adalah besar/size tree berdasarkan jumlah node relatif terhadap tinggi/height tree.
PROGRAM STUDI SISTEM INFORMASI Densitas Binary Tree MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II Binary Search Tree • Sebuah node di Binary Search Tree memiliki path yang unik dari root menurut aturan ordering • Sebuah Node, mempunyai subtree kiri yang memiliki nilai lebih kecil dari node tsb dan subtree kanan memiliki nilai lebih besar dari node tsb. • Tidak diperbolehkan ada node yang memiliki nilai yang sama.
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II Membangun Binary Search Tree 1. Jika value dari node baru sama dengan value dari current node, maka mengembalikan nilai false. 2. Jika value dari node baru kurang dari value dari current node maka : 1) 2) Jika anak kiri current node tidak null, maka ubah current node ke anak kiri tersebut, lakukan langkah 1. Jika anak kiri current node adalah null, maka tambahkan node baru tersebut sebagai anak kiri dari current node 3. Jika value dari node baru lebih besar dari value dari current node maka : 1. 2. Jika anak kanan current node tidak null, maka ubah current node ke anak kanan tersebut, lakukan langkah 1. Jika anak kanan current node adalah null, maka tambahkan node baru tersebut sebagai anak kanan dari current node
PROGRAM STUDI SISTEM INFORMASI Membangun Binary Search Tree MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI Membangun Binary Search Tree MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI Pembentukan Tree MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II Jenis Tree-> Complete Binary Tree • Complete Binary Tree adalah pohon ini mirip dengan Full Bianry Tree, namun pada tiap sub tree boleh memiliki panjang path yang berbeda node kecuali leaf yang meiliki 0 atau 2 anak • Juga disebut sebagai Perfect Binary Tree (Pohon Biner Lengkap)
PROGRAM STUDI SISTEM INFORMASI Jenis Tree->(Skewed Binary Tree) • Binary tree yang semua nodenya (kecuali leaf) hanya memiliki satu anak. • Disebut juga minimum binary tree. MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II Implementasi Program dengan Tree • Implementasi Tree dapat dilakukan menggunakan struktur data linked list; masing-masing node mempunyai tiga bagian yaitu data/info dan dua buah pointer yaitu kiri dan kanan. • Linked list yang digunakan adalah double linked list non circular • Data yang pertama kali masuk akan menjadi node root. • Data yang lebih kecil dari data node root akan masuk dan menempati node kiri dari node root, sedangkan jika lebih besar dari data node root, akan masuk dan menempati node di sebelah kanan node root.
PROGRAM STUDI SISTEM INFORMASI Implementasi Program MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI Contoh implementasi • Misalkan suatu ekspresi berikut: 3 + 2 * 5 – 4 MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI Operasi Tree • Create: membentuk sebuah pohon baru yang kosong. tree= NULL; • Clear: menghapus semua elemen tree = NULL; • Empty: mengetahui apakah pohon kosong atau tidak int is. Empty(Tree *pohon){ if(pohon == NULL) return 1; else return 0; } MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II Operasi Tree § Insert: menambah node ke dalam Tree secara rekursif. Jika data yang akan dimasukkan lebih besar daripada elemen root, maka akan diletakkan di node sebelah kanan, sebaliknya jika lebih kecil maka akan diletakkan di node sebelah kiri. Untuk data pertama akan menjadi elemen root. § 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 Tree § Height : mengetahui kedalaman sebuah Tree § Find Min dan Find Max : mencari nilai terkecil dan terbesar pada Tree § Child : mengetahui anak dari sebuah node (jika punya)
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II 1. Deklarasi STRUC • Karena tree tersusun oleh node-node, maka yang perlu kita deklarasikan adalah komponen node itu sendiri. • Dalam contoh dibawah, akan kita namai Node. kiri data kanan pointer int pointer typedef struct Node{ int data; Node *kiri; Node *kanan; }; Variabel data digunakan untuk menyimpan nilai angka node tersebut, sedangkan kiri dan kanan, bertipe pointer, masing-masing mewakili vektor yang akan menunjuk ke node anak kiri dan kanan.
PROGRAM STUDI SISTEM INFORMASI 2. Inisialisasi Tree • Asumsi node masih kosong node *pohon; pohon = NULL; • *pohon = pointer pohon utk menunjuk struktur bertipe node yg dibuat pada bagian 1 • Karena pohon tersebut sama sekali belum memiliki node, maka pointer *pohon ditunjukkan ke NULL. MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II Operasi tree Menambah/insert node pada Tree • Karena pohon biner, maka untuk menambahkan node, secara otomatis mengikuti aturan penambahan node pada pohon biner: 1. Jika pohon kosong, maka node baru ditempatkan sebagai akar /root pohon. 2. 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. b. Jika kiri node sudah terisi, lakukan kembali pengecekan a dan b terhadap node kiri tersebut. Pengecekan ini dilakukan seterusnya hingga node baru dapat ditempatkan. c. Jika nilai node baru lebih besar dari nilai node yang sedang dicek, maka lihat ke kanan node tersebut. Jika kanan node tersebut kosong (belum memiliki kanan), maka node baru menjadi kanan 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.
PROGRAM STUDI SISTEM INFORMASI Ilustrasi Insert 4. insert(left, 3) MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II • Proses penambahan ini diimplementasikan secara rekursif pada fungsi berikut: void tambah(Node **root, int databaru){ if((*root) == NULL){ Node *baru; baru = new Node; baru->data = databaru; baru->kiri = NULL; baru->kanan = NULL; (*root) = baru; (*root)->kiri = NULL; (*root)->kanan = NULL; } else if(databaru < (*root)->data) tambah(&(*root)->kiri, databaru); else if(databaru > (*root)->data) tambah(&(*root)->kanan, databaru); else if(databaru == (*root)->data) printf("Data sudah ada!"); } • Variabel **root menunjukkan node mana yang sedang dicek saat ini. • Saat pemanggilan fungsi ini, variabel **root di beri nilai pointer yang menunjuk ke node akar, yaitu pohon. tambah(&pohon, data);
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II Metode Traversal • Salah satu operasi yang paling umum dilakukan terhadap sebuah tree adalah kunjungan (traversing) • Sebuah kunjungan berawal dari root, mengunjungi setiap node dalam tree tersebut tepat hanya sekali • Mengunjungi artinya memproses data/info yang ada pada node ybs • Ada tiga cara kunjungan dalam tree: • Pre Order: cetak node yang dikunjungi, kunjungi left, kunjungi right • In Order: kunjungi left, cetak node yang dikunjungi, kunjungi right • Post Order: kunjungi left, kunjungi right, cetak node yang dikunjungi
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II Tree Traversal Pre Order • 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 proses yang sama untuk node yang dikunjungi sebelumnya. *Pre Order : Cetak node yang dikunjungi, kunjungi kiri, kunjungi kanan
PROGRAM STUDI SISTEM INFORMASI Tree traversal-> Pre Order // Kunjungan Pre Order (notasi Prefiks) void pre. Order(Node *root){ if(root != NULL){ printf("%d ", root->data); pre. Order(root->kiri); pre. Order(root->kanan); } } Hasil kunjungan : ABDGHCEHIF MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II Tree traversal-> 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.
PROGRAM STUDI SISTEM INFORMASI Ilustrasi Kunjungan //Kunjungan Inorder (notasi Infiks) void in. Order(Node *root){ if(root != NULL){ in. Order(root->kiri); printf("%d ", root->data); in. Order(root->kanan); } } Hasil kunjungan : DGBAHEICF MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II Tree traversal-> Post 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. 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.
PROGRAM STUDI SISTEM INFORMASI Ilustrasi Kunjungan // kunjungan Post. Order (notasi Posfiks) void post. Order(Node *root){ if(root != NULL){ post. Order(root->kiri); post. Order(root->kanan); printf("%d ", root->data); } } Hasil kunjungan : GDBHIEFCA MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II 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. Tree *cari(Tree *root, int data){ if(root==NULL) return NULL; else if(data < root->data) return (cari(root->left, data)); else if(data > root->data) return (cari(root->right, data)); else if(data == root->data) return root; }
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II Ilustrasi 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! �
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II Jumlah Node Tree int count(Tree *root) { if (root == NULL) return 0; Else return count(root->left) + count(root->right) + 1; } • 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.
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II Kedalaman (height) Node Tree int height(Node *root) { if(root == NULL) return -1; else{ int u = height(root->kiri); int v = height(root->kanan); if(u > v) return u + 1; else return v + 1; } } • 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.
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II Cara membaca Tree 1. Preorder Traversal (root - left -right) Tree a : A-B-C-D Tree b : A-B-D-C-E-F Tree c : B-C-D-E 2. Inorder Traversal (left - root -right) Tree a : B-A-D-C Tree b : B-D-A-E-C-F Tree c : B-D-C-E 3. Postorder Traversal (left - right - root) Tree a : B-D-C-A Tree b : D-B-E-F-C-A Tree c : D-E-C-B
MATA KULIAH PROGRAM STUDI ALGORITMA DAN PEMROGRAMAN II SISTEM INFORMASI 1 Pre Order : cetak kiri kanan 3 In Order : kiri cetak kanan 5 Post Order : kiri kanan cetak tiap kunjungan Pre Order = 30, 40, 15, 27, 45 In Order = 40, 15, 30, 27, 45 Post Order = 15, 40, 45, 27, 30 Level = 30, 40, 27, 15, 45 (Pada pembacaan level, dimulai dr level akar, kiri, kanan, turun ke level selanjutnya, kiri, kanan, begitu seterusnya )
PROGRAM STUDI SISTEM INFORMASI #include <stdio. h> #include <conio. h> typedef struct Node{ int data; Node *kiri; Node *kanan; }; void tambah(Node **root, int databaru){ if((*root) == NULL){ Node *baru; baru = new Node; baru->data = databaru; baru->kiri = NULL; baru->kanan = NULL; (*root) = baru; (*root)->kiri = NULL; (*root)->kanan = NULL; printf("Data bertambah!"); } else if(databaru < (*root)->data) tambah(&(*root)->kiri, databaru); else if(databaru > (*root)->data) tambah(&(*root)->kanan, databaru); else if(databaru == (*root)->data) printf("Data sudah ada!"); } MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI void pre. Order(Node *root){ if(root != NULL) { printf("%d ", root->data); pre. Order(root->kiri); pre. Order(root->kanan); } } void in. Order(Node *root){ if(root != NULL){ in. Order(root->kiri); printf("%d ", root->data); in. Order(root->kanan); } } void post. Order(Node *root){ if(root != NULL){ post. Order(root->kiri); post. Order(root->kanan); printf("%d ", root->data); } } MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI void main(){ int pil, c; Node *pohon, *t; pohon = NULL; do{ clrscr(); int data; printf("MENUn"); printf("1. Tambahn"); printf("2. Lihat pre-ordern"); printf("3. Lihat in-ordern"); printf("4. Lihat post-ordern"); printf("5. Exitn"); printf("Pilihan : "); scanf("%d", &pil); switch(pil){ case 1: printf("Data baru : "); scanf("%d", &data); tambah(&pohon, data); break; case 2: if(pohon!=NULL) pre. Order(pohon); else printf("Masih kosong!"); break; case 3: if(pohon!=NULL) in. Order(pohon); else printf("Masih kosong!"); break; case 4: if(pohon!=NULL) post. Order(pohon); else printf("Masih kosong!"); break; } getch(); }while(pil!=5); } MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI Menggambar POHON Menggambar pohon menggunakan tabel stack dari notasi infix MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
PROGRAM STUDI SISTEM INFORMASI RANGKUMAN Dengan menggunakan struktur tree, maka notasi infix yang rumit dapat dikonfersi ke dalam notasi prefix ataupun postfix menjadi lebih mudah MATA KULIAH ALGORITMA DAN PEMROGRAMAN II
THANKS ANY QUESTIONS?