INF202: Struktur Data

dokumen-dokumen yang mirip
JURUSAN SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO PURWOKERTO 2014

ALGORITMA DAN STRUKTUR DATA

Tenia Wahyuningrum, S.Kom. MT Sisilia Thya Safitri, S.T.,M.T.

BAB VII Tujuan 7.1 Deskripsi dari Binary Tree

MODUL PRAKTIKUM STRUKTUR DATA

B C D E F G H I J K L M N O P Q R S T. Tinaliah, S.Kom POHON BINER

Konsep Pohon (Tree) Binary Tree Penyajian Tree dengan Array Penyajian Tree dengan Linked List Metode Traversal (Kunjungan Node pada Tree)

TREE STRUCTURE (Struktur Pohon)

Silsilah keluarga Hasil pertandingan yang berbentuk turnamen Struktur organisasi dari sebuah perusahaan

BAB IX TREE (POHON) ISTILAH DASAR

Pertemuan 9 STRUKTUR POHON & KUNJUNGAN POHON BINER

BAB IV POHON. Diktat Algoritma dan Struktur Data 2

JURUSAN SISTEM INFORMASI

BAB VII POHON BINAR POHON

Pohon dan Pohon Biner

Tree (Struktur Data) Nisa ul Hafidhoh, MT

STRUKTUR POHON & KUNJUNGAN POHON BINER

Binary Tree. Binary Tree dapat digambarkan berdasarkan kondisinya, sebagai berikut: Pointer ke akar (root) dari tree

Binary Tree kosong Gambar 1. Binary Tree dalam kondisi kosong

TREE ALGORITMA & STRUKTUR DATA. Materi ASD Fakultas Teknik Elektro & Komputer UKSW ( Download Dari :

IT234 Algoritma dan Struktur Data. Tree

Algoritma dan Struktur Data. Binary Tree & Binary Search Tree (BST)

Pohon (Tree) Universitas Gunadarma Sistem Informasi 2012/2013

6. TREE / BINARY TREE

Binary Search Tree (BST)

STRUKTUR POHON (TREE) Pohon atau Tree adalah salah satu bentuk Graph terhubung yang tidak mengandung sirkuit.

Pohon Biner (Bagian 1)

STRUKTUR POHON (TREE) Pohon atau Tree adalah salah satu bentuk Graph terhubung yang tidak mengandung sirkuit.

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II

Praktikum Algoritma dan Setruktur Data

Tree. Perhatikan pula contoh tree di bawah ini : Level. Level 2. Level 3. Level 4. Level 5

Struktur Data Tree/Pohon dalam Bahasa Java

Membuat Binary Search Tree Menggunakan STL Vector C++

Ringkasan mengenai Tree (Dari beberapa referensi lain) Nina Valentika

Pemrograman Algoritma Dan Struktur Data

A B C E F G K Contoh Tree

Buku Ajar Struktur Data

Hari : Rabu Pertemuan : 4 Tanggal Praktikum : 28 November 2001 Shift : 4

Algoritma dan Struktur Data. Tree

Binary Tree. Binary Tree dapat digambarkan berdasarkan kondisinya, sebagai berikut: Pointer ke akar (root) dari tree

Struktur Data & Algoritma

Pohon. Bahan Kuliah IF2120 Matematika Diskrit. Program Studi Teknik Informatika ITB. Rinaldi M/IF2120 Matdis 1

Pertemuan 15 REVIEW & QUIS

Definisi. Pohon adalah graf tak-berarah, terhubung, dan tidak mengandung sirkuit. pohon pohon bukan pohon bukan pohon (ada sikuit) (tdk terhubung)

Seharusnya. if (antrian.tail==max-1) return 0;

KUM 6 IMPLEMENTASI BINARY TREE

Politeknik Elektronika Negeri Surabaya

Pohon (TREE) Matematika Deskrit. Hasanuddin Sirait, MT 1

BAB 7 POHON BINAR R S U

Matematika Diskret (Pohon) Instruktur : Ferry Wahyu Wibowo, S.Si., M.Cs.

Definisi. Pohon adalah graf tak-berarah terhubung yang tidak mengandung sirkuit. pohon pohon bukan pohon bukan pohon

Soal Pendahuluan Modul 3

KUNJUNGAN PADA POHON BINER

Data Structure TREE & BINARY TREE. Chapter 5b. Dahlia Widhyaestoeti, S.Kom

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 10 & 11

Silsilah keluarga Hasil pertandingan yang berbentuk turnamen Struktur organisasi dari sebuah perusahaan. B.1 Pohon Biner (Binary Tree)

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

Praktikum Algoritma dan Struktur Data

DEFINISI. Pohon adalah graf tak-berarah terhubung yang tidak mengandung sirkuit. pohon pohon bukan pohon bukan pohon 2

Termilogi Pada Pohon Berakar 10 Pohon Berakar Terurut

Algoritma dan Struktur Data. Linked List

MAKALAH DESAIN DAN ANALISIS ALGORITMA BINARY TREE DISUSUN OLEH : 1. Nadim Achmad ( ) 2. Dzurratul Ulya ( )

Algoritma dan Struktur Data. Linear & Binary Search Tree

Struktur dan Organisasi Data 2 POHON BINAR

13/12/2013. Binary Tree. Contoh Tree

Politeknik Elektronika Negeri Surabaya

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

POHON CARI BINER (Binary Search Tree)

INFIX, POSTFIX, dan PREFIX Bambang Wahyudi

SOAL TUGAS STRUKTUR DATA

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Tree (Pohon)

Senarai berantai. linked list. Pertemuan keenam Struktur data st3telkom.ac.id. by : tenia wahyuningrum & Sisilia Thya Safitri

Syarif Abdullah (G )

Bab 1 Pengantar Struktur Data

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.

SENARAI BERANTAI (LINK LIST)

Politeknik Elektronika Negeri Surabaya

Pohon Biner Bagian 2 (Pohon Seimbang, Pohon Biner Terurut, Pembangunan Pohon Biner dari Pita Karakter/String)

A. TUJUAN Mahasiswa diharapkan mampu : 1. Memahami Konsep Binary Search Tree 2. Mengimplementasaikan Binary Search Tree

BAB 7 POHON BINAR. Contoh : Pohon berakar T R S U

TUGAS MAKALAH INDIVIDUAL. Mata Kuliah : Matematika Diskrit / IF2153 Nama : Dwitiyo Abhirama NIM :

KONSEP POINTER DAN LINKED LIST

METODE AVL TREE UNTUK PENYEIMBANGAN TINGGI BINARY TREE

STRUKTUR DATA Pertemuan 1 s.d 8

Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

ANALISIS ALGORITMA BINARY SEARCH

SINGLE LINKED LIST NON CIRCULAR (SENARAI BERANTAI TUNGGAL TIDAK BERPUTAR)

KONSEP POINTER DAN LINKED LIST

Penerapan BFS dan DFS dalam Garbage Collection

Algoritma dan Struktur Data. Ramos Somya

DOUBLE LINKED LIST. Danang Wahyu Utomo Danang Wahyu Utomo, M.Kom, M.CS

KONSEP POINTER DAN LINKED LIST

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

Implementasi Skema Pohon Biner yang Persistent dalam Pemrograman Fungsional

Pertemuan 9 STRUKTUR POHON (TREE) Sifat utama Pohon Berakar ISTILAH-ISTILAH DASAR

Algoritma dan Struktur Data. Pertemuan 7 Linked List

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA DOUBLE LINKED LIST CIRCULAR

8/29/2014. Kode MK/ Nama MK. Matematika Diskrit 2 8/29/2014

Transkripsi:

Pertemuan 13 & 14: INF202: Struktur Data POHON (TREE) Dosen: Wayan Suparta, PhD

Definisi Pohon (Tree) adalah graf tak-berarah terhubung yang tidak mengandung sirkuit. Pohon termasuk struktur non linear yang didefinisikan sebagai data yang terorganisir dari suatu item informasi cabang yang saling terkait. Pohon yang dalam analisis pemecahan masalah pengambilan keputusan : Pemetaan mengenai alternatif-alternatif pemecahan masalah yang dapat diambil dari masalah tersebut. Pohon tersebut juga memperlihatkan faktor-faktor kemungkinan/probabilitas yang akan mempengaruhi alternatif-alternatif keputusan tersebut, disertai dengan estimasi hasil akhir yang akan didapat bila kita mengambil alternatif keputusan tersebut.

Term Node Parent Child Root Sibling Leaf Level Istilah dalam Tree Definition Sebuah elemen dalam sebuah tree; berisi sebuah informasi Node yang berada di atas node lain secara langsung; Q adalah parent dari R dan S Cabang langsung dari sebuah node; D dan E merupakan children dari B Node teratas yang tidak punya parent (P) Sebuah node lain yang memiliki parent yang sama; Sibling dari Q adalah T karena memiliki parent yang sama yaitu P Sebuah node yang tidak memiliki children. R, S, V, W adalah leaf (daun). Leaf biasa disebut sebagai external node, sedangkan node selainnya disebut sebagai internal node. Q, B, T, U adalah internal node Semua node yang memiliki jarak yang sama dari root. P level 1; Q,T level 2; R, S, U level 3; V, W level 4 Jumlah level yang ada dalam tree Depth Complete Semua parent memiliki children yang penuh Balanced Semua subtree memiliki depth yang sama

Pengantar: Binary Tree Bentuk Pohon Berakar yang lebih mudah dikelola dalam komputer adalah Pohon Biner (Binary Tree). Binary Tree lebih dikenal sebagai Pohon Umum (General Tree) yang dapat didefinisikan sebagai kumpulan simpul yang mungkin kosong atau mempunyai akar dan dua Subpohon yang saling terpisah yang disebut dengan Subpohon Kiri/cabang kiri (Left Subtree) dan Subpohon Kanan/cabang kanan (Right Subtree).

Struktur Binary Tree Karakteristik Pohon Biner (Binary Tree) : 1. Setiap Simpul paling banyak hanya memiliki dua buah anak 2. Derajat Tertinggi dari setiap Simpul adalah dua. 3. Dibedakan antara Cabang Kiri dan Cabang Kanan. 4. Dimungkinkan tidak mempunyai Simpul. Masing-masing simpul dalam binary tree terdiri dari tiga bagian yaitu sebuah data dan dua buah pointer yang dinamakan pointer kiri dan kanan. Pointer Data Pointer

Istilah pada Pohon Biner

Pohon biner miring (skewed tree)

Pembentukan Tree

Pembentukan Tree Langkah-langkah Pembentukan Binary Tree: 1. Siapkan node baru - alokasikan memorinya - masukkan infonya - set pointer kiri & kanan = NULL 2. Sisipkan pada posisi yang tepat - penelusuran utk menentukan posisi yang tepat; info yang nilainya lebih besar dari parent akan ditelusuri di sebelah kanan, yang lebih kecil dari parent akan ditelusuri di sebelah kiri - penempatan info yang nilainya lebih dari parent akan ditempatkan di sebelah kanan, yang lebih kecil di sebelah kiri

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 yang bersangkutan Kunjungan bisa dilakukan dengan 3 cara: 1. Preorder (Prefix) 2. Inorder (Infix) 3. Postorder (Postfix) Ketiga macam kunjungan tersebut bisa dilakukan secara rekursif dan non rekursif.

Preorder (Prefix) Kunjungan preorder, juga disebut dengan depth first order, menggunakan urutan: Cetak isi simpul yang dikunjungi Kunjungi cabang kiri Kunjungi cabang kanan A P T S U R I P A S U T R I void preorder(pohon ph) if (ph!= NULL) printf("%c ", ph->info); preorder(ph->kiri); preorder(ph->kanan);

Inorder (Infix) Kunjungan secara inorder, juga sering disebut dengan symmetric order, menggunakan urutan: Kunjungi cabang kiri Cetak isi simpul yang dikunjungi Kunjungi cabang kanan P void inorder(pohon ph) if (ph!= NULL) inorder(ph->kiri); printf("%c", ph->info); inorder(ph->kanan); A T S U R I S A U P R T I

Postorder (Postfix) Kunjungan secara postorder menggunakan urutan: Kunjungi cabang kiri Kunjungi cabang kanan Cetak isi simpul yang dikunjungi P void postorder(pohon ph) if (ph!= NULL) postorder(ph->kiri); postorder(ph->kanan); printf("%c ", ph->info); A T S U R I S U A R I T P

Contoh: Pre, In, and Post Order

Contoh: Pre, In, and Post Order Diketahui level: 54 40 66 20 50 59 75 57 62 Gambar pohon biner dan telusuri Pre Order, In Order dan Post Ordernya.

Kasus traversal T E R L S A I Pre Order: T E L S R A I In Order : L E S T A R I Post Order: L S E A I R T

Jenis traversal tree ada 3 1. Pre Order Kunjungi simpul akar Sub kiri Sub kanan Contoh: Tree = (C * D) + E, maka Pre Order = +*CDE 3. Post Order Sub kiri Sub kanan Kunjungi simpul akar Contoh, Tree = (C * D) + E, maka Post Order = CD*E+ 2. In Order Sub kiri Kunjungi simpul akar Sub kanan Contoh, Tree = (C * D) + E, maka In Order = C*D+E C D

Contoh traversal Tentukan traversal tree dari tree: [ A ^ (B - C) / (E * F) + G] Maka: Pre Order = /^-BCA+*EFG In Order = B-C^A/E*F+G Post Order = BC-A^EF*G+/ Perhatikan operator dengan operasi terbanyak/terberat akan sebagai ROOT. Persamaan In Order adalah mirip dengan traversal.

Deklarasi Tree Declarasi struct typedef char typeinfo; typedef struct Node tree; struct Node typeinfo info; /*jenis data*/ tree *kiri; /* cabang kiri */ tree *kanan; /* cabang kanan */ typedef struct Node //struct Node int data; //char data; Node *kiri; Node *kanan; Node *parent; ; Node *pohon = NULL;

Contoh 1: Program Binary Tree //Tree_Binary //header file #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <iostream> using namespace std; //deklarasi AWAL struct sebuah tree typedef struct Node int data; Node *kiri; Node *kanan; ; Node *pohon = NULL; //fungsi untuk menambahkan node baru void tambah (Node **root, int databaru) //jika root masih kosong if ((*root)==null) //pembuatan node baru Node *baru; //alokasi memori dari node yang dibuat baru = new Node; //inisialisasi awal node yang baru dibuat baru->data=databaru; baru->kiri=null; baru->kanan=null; (*root) = baru; (*root) -> kiri = NULL; (*root) -> kanan = NULL; //jika menunjuk ke NULL artinya tidak mempunyai child printf("data Bertambah!");

Sambungan #1 //jika data yang akan dimasukkan lebih kecil daripada elemen root, maka akan diletakkan di node sebelah kiri. else if (databaru<(*root)->data) tambah(&(*root)->kiri, databaru); //jika data yang akan dimasukkan lebih besar daripada elemen root, maka akan diletakkan di node sebelah kanan else if (databaru>(*root)->data) tambah(&(*root)->kanan, databaru); //jika saat dicek data yang akan dimasukkan memiliki nilai yang sama dengan data pada root else if (databaru==(*root)->data) printf("data Sudah ada!"); //fungsi yang digunakan untuk mencetak tree secara preorder void preorder(node *root) if(root!=null) if(root->data!=null) printf("%d ",root->data); preorder(root->kiri); preorder(root->kanan); //fungsi yang digunakan untuk mencetak tree secara inorder void inorder(node *root) if(root!=null)

Sambungan #2 if(root!=null) inorder(root->kiri); if(root->data!=null) printf("%d ",root->data); inorder(root->kanan); //fungsi yang digunakan untuk mencetak tree secara postorder void postorder(node *root) if(root!=null) postorder(root->kiri); postorder(root->kanan); if(root->data!=null) printf("%d ",root->data); //fungsi utama int main() //deklarasikan variabel char pil; while (true) system("cls"); //bersihkan layar char data; printf("\t#program TREE Dev C++#"); printf("\n\t================="); printf("\nmenu"); printf("\n----\n"); printf("[1] Tambah Data\n"); printf("[2] Lihat Pre-Order\n"); printf("[3] Lihat In-Order\n"); printf("[4] Lihat Post-Order\n"); printf("[x] Keluar\n"); printf("pilihan Anda : "); scanf("%c",&pil); fflush(stdin); //mengosongkan buffering

Sambungan #3 switch(pil) //jika pil bernilai '1' case '1': printf("\ninput : "); printf("\n-------"); printf("\nmasukkan data: "); scanf("%d", &data); //panggil fungsi untuk menambah node yang berisi data pada tree tambah(&pohon,data); _getch(); break; //jika pil bernilai '2' case '2': printf("\noutput PRE ORDER : "); printf("\n------------------\n"); if(pohon!=null) //panggil fungsi untuk mencetak data secara preorder preorder(pohon); else printf("masih Kosong!!!"); _getch(); break; //jika pil bernilai '3' case '3': printf("\noutput IN ORDER : "); printf("\n------------------\n"); if(pohon!=null) //panggil fungsi untuk mencetak data secara inorder inorder(pohon); else printf("masih Kosong!!!"); _getch(); break; //jika pil bernilai '4' case '4': printf("\noutput POST ORDER: "); printf("\n------------------\n"); if(pohon!=null) //panggil fungsi untuk mencetak data secara postorder postorder(pohon); else printf("masih Kosong!!!"); _getch(); break;

Sambungan #4 //jika pil bernilai 'X' atau 'x' case 'X' 'x': exit(0); break; Catatan: Entri data satu per satu. Pre Order sesuai dengan data yang dientri In Order Diurutkan dari kecil ke besar Post Order susunan output seperti distribusi normal. Data pertama terletak di akhir. Contoh data entry: 60 45 30 70 40 90 25 80 Pelajari contoh lain dalam link di bawah ini: http://www.nblognlife.com/2014/12/binary -search-tree-bst-tree-lanjutan.html

Contoh 2: Program Gambar Tree OUTPUT PROGRAM: M A S T E R //Diketahui Pre Order: MASTER //header file #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <iostream> using namespace std; //Deklarasi Tree typedef struct node char s152; node *kiri; node *kanan; ; node *root=null;

Sambungan #1 //Tambah data void Tambahdata(node **root, char u152) if((*root)==null) node *baru; baru= new node; baru->s152 = u152; baru->kiri = NULL; baru->kanan = NULL; (*root)=baru; //Pre Order void preorder(node *root) if(root!=null) printf("%c ", root->s152); preorder(root->kiri); preorder(root->kanan); //In Order void inorder(node *root) if(root!=null) inorder(root->kiri); printf("%c ", root->s152); inorder(root->kanan); //Post Order void postorder(node *root) if(root!=null) postorder(root->kiri); postorder(root->kanan); printf("%c ", root->s152);

Sambungan #2 //Program utama main() char g152; Tambahdata(&root,g152='M'); Tambahdata(&root->kiri,g152='A'); Tambahdata(&root->kiri->kiri,g152='S'); Tambahpang(&root->kiri->kiri->kiri, g152='t'); Tambahdata(&root->kiri->kiri->kanan,g152='E'); Tambahdata(&root->kanan,g152='R'); printf("tampilan secara PreOrder : "); preorder(root); printf("\ntampilan secara InOrder : "); inorder(root); printf("\ntampilan secara PostOrder : "); postorder(root); getch(); return 0;

LATIHAN 19 A. Asumsikan anda mempunyai sejumlah dana untuk diinvestasikan pada dua alternatif proyek, yaitu proyek A dan B. Peluang proyek A akan memberikan keuntungan adalah 25% dengan nilai keuntungan 75 juta. Peluang proyek B akan memberikan keuntungan adalah 45% dengan nilai keuntungan 25 juta. Buatlah pohon keputusan untuk membantu anda dalam mengambil keputusan. B. Buatlah pohon biner dari barisan bilangan berikut: 1. 12, 22, 8, 19, 10, 9, 20, 4, 2, 6 2. B, C, D, E, Z, J, N, K, W, L, O, E, G 3. 7, 13, 4, 6, 5, 9, 15, 20, 60, 14, 40, 70 4. 50, 45, 55, 50, 40, 50, 60, 70, 40, 35, 30, 20, 80, 75, 85 5. P, N, L, Q, R, T, S, U, M, O, Y, Z, O

C. Tentukan traversal tree dari tree (A * B) + (C + D) D. Tentukan traversal tree dari tree (C * F)^A + (B / D)+G E. Dari contoh program biner di atas, buatlah program Pohon Biner yang dapat melakukan tambah data secara serentak: 1. Memasukkan data 2. Melakukan Traverse 3. Menghitung jumlah node F. Buatlah program untuk menampilkan node baru ke dalam pohon dengan menggunakan prosedur preorder, inorder, dan postorder sehingga akan didapatkan hasil : Tampilan secara PreOrder : L A K C N I Tampilan secara InOrder : K A N C I L Tampilan secara PostOrder : K N I C A L