Pohon Biner (Bagian 1)

dokumen-dokumen yang mirip
Pohon Biner. Tim Pengajar IF2030 Semester I/ /8/2009 FNA/IF2030/Sem

Tipe Rekursif: POHON (TREE)

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

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

STRUKTUR POHON. HUTAN Definisi : hutan adalah sequence (list) dari pohon)

6. TREE / BINARY TREE

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

Pohon dan Pohon Biner

ALGORITMA DAN STRUKTUR DATA

BAB IV POHON. Diktat Algoritma dan Struktur Data 2

Penerapan Pohon Untuk Memanipulasi dan Meritrieve Data

Binary Tree kosong Gambar 1. Binary Tree dalam kondisi kosong

BAB VII Tujuan 7.1 Deskripsi dari Binary Tree

BAB VII POHON BINAR POHON

List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1

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

Pemrograman Algoritma Dan Struktur Data

Tree (Struktur Data) Nisa ul Hafidhoh, MT

Pertemuan 9 STRUKTUR POHON & KUNJUNGAN POHON BINER

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

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

Pohon (Tree) Universitas Gunadarma Sistem Informasi 2012/2013

TREE STRUCTURE (Struktur Pohon)

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

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

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

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

KUM 6 IMPLEMENTASI BINARY TREE

STRUKTUR POHON & KUNJUNGAN POHON BINER

IT234 Algoritma dan Struktur Data. Tree

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

Termilogi Pada Pohon Berakar 10 Pohon Berakar Terurut

Optimalisasi Algoritma Pencarian Data Memanfaatkan Pohon Biner Terurut

MODUL PRAKTIKUM STRUKTUR DATA

Politeknik Elektronika Negeri Surabaya

Buku Ajar Struktur Data

Ringkasan mengenai Tree (Dari beberapa referensi lain) Nina Valentika

Implementasi Skema Pohon Biner yang Persistent dalam Pemrograman Fungsional

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

BAB IX TREE (POHON) ISTILAH DASAR

Variasi List Linier (Bagian 2)

A B C E F G K Contoh Tree

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

Algoritma dan Struktur Data. Tree

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

Soal Pendahuluan Modul 3

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

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

GANJIL 2009/2010 NIM: Algoritma dan Struktur Data / CS2014 Nama :

BAB XI Manipulasi Binary Tree

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

Struktur Data Tree/Pohon dalam Bahasa Java

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

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

13/12/2013. Binary Tree. Contoh Tree

POHON CARI BINER (Binary Search Tree)

Algoritma dan Struktur Data. Linear & Binary Search Tree

Struktur dan Organisasi Data 2 POHON BINAR

KUNJUNGAN PADA POHON BINER

BAB 7 POHON BINAR R S U

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II

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

Struktur Data & Algoritma

METODE AVL TREE UNTUK PENYEIMBANGAN TINGGI BINARY TREE

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

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

Pohon Biner dan Aplikasinya

QUEUE Antrian 1. DEFINISI

LIST LINIER 1. DEFINISI

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

TREE. Definisi. Istilah-istilah Umum dalam Tree

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

Penerapan BFS dan DFS dalam Garbage Collection

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

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Kode : IF2121 NIM :... Matakuliah : Algoritma dan Struktur Data Nama :... Hari, Tanggal : Senin, 13 November 2017 Waktu : 150 Menit

UJIAN AKHIR SEMESTER GANJIL 2005/2006 ALGORITMA & STRUKTUR DATA / CS2014

Pertemuan 15 REVIEW & QUIS

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

TERAPAN POHON BINER 1

Binary Search Tree (BST)

Struktur Data. Queue (Antrian)

Koleksi Hirarkis Tree

Penerapan Pohon dengan Algoritma Branch and Bound dalam Menyelesaikan N-Queen Problem

Bab 1 Pengantar Struktur Data

Studi Digital Tree dan Aplikasinya pada Kamus

INFIX, POSTFIX, dan PREFIX Bambang Wahyudi

Array dan Matriks. IF2121 / Algoritma dan Struktur Data Sem / /7/2017 IF2121/sem /2018 1

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal

REPRESENTASI FISIK LIST LINEAR

MODUL 6 SINGLE & DOUBLE LINKED LIST

Mata Kuliah : Struktur Data Semester : Genap Kode Mata Kuliah : 307 Waktu : 180 Menit Bobot : 4 sks. Jurusan : MI

Syarif Abdullah (G )

Pembentukan pohon pencarian solusi dan perbandingan masingmasing algoritma pembentuknya dalam simulasi N-Puzzle

Penerapan DFS dan BFS dalam Pencarian Solusi Game Japanese River IQ Test

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

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

Penerapan strategi runut-balik dalam penyelesaian permainan puzzle geser

Membuat Binary Search Tree Menggunakan STL Vector C++

Transkripsi:

Pohon Biner (Bagian 1) Tim Pengajar IF2110R Semester I 2016/2017 1

Tujuan Mahasiswa memahami definisi pohon dan pohon biner Berdasarkan pemahaman tersebut, mampu membuat fungsi sederhana yang memanipulasi pohon Mahasiswa mampu mengimplementasi fungsi pemroses pohon dalam bahasa C (melalui praktikum) 2

Contoh Persoalan - 1 Menu dalam Aplikasi Komputer Contoh (Ms Word): File Open Close Save Table Draw Insert Table Column Row Delete File Menu Ms Word Table Open Close Save Draw Insert Delete Table Column Row 3

Contoh Persoalan - 2 Susunan bab dalam buku Contoh: Diktat Struktur Data Bagian I. Struktur Data Abstract Data Type ADT JAM dalam Bahasa Algoritmik ADT POINT dalam Bahasa Algoritmik ADT GARIS dalam Bahasa Algoritmik Latihan Soal Koleksi Objek Bagian II Studi Kasus 1 : Polinom Deskripsi Persoalan Studi Kasus 2 : Kemunculan Huruf dan Posisi Pada Pita Karakter Deskripsi Persoalan 4

Pohon keluarga Contoh Persoalan - 3 Contoh: Pohon keluarga bangsawan Inggris Elizabeth II Charles Anne Andrew Edward William Harry Peter Zara Beatrice Eugenie Louise James 5

Akar Akar Pohon SubPohon Pohon SubPohon Definisi Rekursif Pohon: - Akar basis - Sub Pohon (sub himpunan yang berupa pohon) rekurens 6

Definisi Rekursif Pohon Pohon (tree) adalah himpunan terbatas, tidak kosong, dengan elemen sebagai berikut: Sebuah elemen yang dibedakan dari yang lain AKAR Elemen yang lain (jika ada) dibagi-bagi menjadi beberapa sub himpunan yang disjoin dan masingmasing sub himpunan itu adalah pohon SUBPOHON Suffiks -aire pada pohon menunjukkan berapa maksimum subpohon yang dapat dimiliki oleh suatu pohon Binaire (binary) : maksimum subpohon 2 N-aire : maksimum subpohon N 7

Simpul a adalah ayah, simpul b dan simpul c anak. Simpul b adalah saudara dari simpul c Istilah a Ayah (father/parent) Anak (child) Saudara (sibling) b c d e g h Simpul b adalah ayah, simpul d dan simpul e adalah anak. Simpul d adalah saudara dari simpul e i 8

Tingkat (level) : panjang jalan dari akar sampai simpul tertentu. Cth: tingkat (e) = 3, tingkat (i) = 4, Kedalaman (depth) : tingkat terpanjang. Cth: kedalaman pohon=4 b Istilah a c Jalan (path) : urutan tertentu dari cabang, cth: a-c-h-i Lebar (breadth) : maksimum jml simpul pd suatu tingkat. d e g h Daun (leaf) : simpul terminal i Derajat (degree) : banyaknya anak sebuah simpul. Cth, derajat(c)=2, derajat(h)=1, derajat(g)=0 9

Beberapa Ilustrasi Representasi a b c d e f g h d e b f a g c h i Graph i Himpunan a Bentuk Linier Indentasi b d e f c gh Prefix: (a (b (d (), e (), f ()), c ( g (), h ( i ())))) (a (b (d) (e) (f)) (c (g) (h (i)))) Postfix: (((d,e,f) b, (g, (i) h) c) a) i 10

Pohon Biner Pohon biner adalah himpunan terbatas yang mungkin kosong, atau terdiri atas sebuah simpul yang disebut akar dan dua buah himpunan lain yang disjoint yang merupakan pohon biner, yang disebut sebagai sub pohon kiri dan sub pohon kanan dari pohon biner tersebut Perhatikanlah perbedaan pohon biner dengan pohon N-aire: pohon biner mungkin kosong, pohon N-aire tidak mungkin kosong 11

Contoh Pohon Biner + 3 * a 3+(4*5) 4 5 c b Pohon biner condong kiri a a c b d Pohon biner condong kanan b c e Pohon condong/skewed tree 12

ADT Pohon Biner dengan Representasi Berkait dengan Pointer (Bahasa C) #define Nil NULL /* Selektor */ #define Akar(P) (P)->info #define Left(P) (P)->left #define Right(P) (P)->right typedef int infotype; typedef struct tnode *addrnode; typedef struct tnode { infotype info; addrnode left; addrnode right; Node; /* Definisi PohonBiner : */ /* Phon Biner kosong : P = Nil */ typedef addrnode BinTree; 13

Konstruktor BinTree Tree (infotype Akar, BinTree L, BinTree R); /* Menghasilkan sebuah pohon biner dari A, L, dan R, jika alokasi berhasil */ /* Menghasilkan pohon kosong (Nil) jika alokasi gagal */ void MakeTree (infotype Akar, BinTree L, BinTree R, BinTree *P); /* I.S. Akar, L, R terdefinisi. P Sembarang */ /* F.S. Membentuk pohon P dengan Akar(P)=Akar, Left(P)=L, dan Right(P)=R jika alokasi berhasil. P = Nil jika alokasi gagal. */ 14

Selektor Jika P adalah BinTree, maka: Akar(P) adalah P->Info {Nilai Akar pohon biner P Left(P) adalah P->Left {Subpohon kiri pohon biner P Right(P) adalah P->Right {Subpohon kanan pohon biner P 15

Memory Management addrnode AlokNode (infotype X); /* Mengirimkan addrnode hasil alokasi sebuah elemen */ /* Jika alokasi berhasil, maka addrnode tidak Nil, dan misalnya menghasilkan P, maka Akar(P) = X, Left(P) = Nil, Right(P)=Nil */ /* Jika alokasi gagal, mengirimkan Nil */ void DealokNode (addrnode P); /* I.S. P terdefinisi */ /* F.S. P dikembalikan ke sistem */ /* Melakukan dealokasi/pengembalian addrnode P */ 16

Predikat Penting - 1 boolean IsTreeEmpty (BinTree P) /* Mengirimkan true jika P adalah pohon biner kosong */ { /* Kamus Lokal */ /* Algoritma */ return (P == Nil); boolean IsTreeOneElmt (BinTree P) /* Mengirimkan true jika P adalah pohon biner tidak kosong dan hanya memiliki 1 elemen */ { /* Kamus Lokal */ /* Algoritma */ if (P!= Nil) { return (Left(P) == Nil && Right(P) == Nil); else { /* Pohon kosong */ return false; 17

Predikat Penting - 2 boolean IsUnerLeft (BinTree P) /* Mengirimkan true jika pohon biner tidak kosong P adalah pohon unerleft: hanya mempunyai subpohon kiri */ { /* Kamus Lokal */ /* Algoritma */ if (P!= Nil) { return (Left(P)!= Nil && Right(P) == Nil); else { /* Pohon kosong */ return false; boolean IsUnerRight (BinTree P) /* Mengirimkan true jika pohon biner tidak kosong P adalah pohon unerright: hanya mempunyai subpohon kanan*/ { /* Kamus Lokal */ /* Algoritma */ if (P!= Nil) { return (Left(P) == Nil && Right(P)!= Nil); else { /* Pohon kosong */ return false; 18

Predikat Penting - 3 boolean IsBiner (BinTree P) /* Mengirimkan true jika pohon biner tidak kosong P adalah pohon biner: mempunyai subpohon kiri dan subpohon kanan*/ { /* Kamus Lokal */ /* Algoritma */ if (P!= Nil) { return (Left(P)!= Nil && Right(P)!= Nil); else { /* Pohon kosong */ return false; 19

Pohon Basis-0 Definisi rekursif Basis: pohon biner kosong adalah pohon biner {menggunakan predikat IsTreeEmpty Rekurens: Pohon biner tidak kosong terdiri dari sebuah simpul akar dan dua anak: sub pohon kiri dan sub pohon kanan. Sub pohon kiri dan sub pohon kanan adalah pohon biner 11/13/2017 IF2110R/Sem. 1 2016/2017/Dari 20

Pohon Basis-1 Definisi rekursif Basis: pohon biner yang hanya terdiri dari akar {menggunakan predikat IsOneElmt Rekurens: Pohon biner tidak kosong terdiri dari sebuah simpul akar dan dua anak yang salah satunya pasti tidak kosong: sub pohon kiri dan sub pohon kanan. Gunakan IsUnerLeft, IsUnerRight, IsBiner untuk memastikan tidak terjadi pemrosesan pada pohon kosong 11/13/2017 IF2110R/Sem. 1 2016/2017/Dari 21

Traversal - Preorder void PreOrder (BinTree P) /* I.S. Pohon P terdefinisi */ /* F.S. Semua node pohon P sudah diproses secara PreOrder: akar, kiri, kanan */ /* Basis : Pohon kosong : tidak ada yang diproses */ /* Rekurens : Proses Akar(P); Proses secara Preorder (Left(P)); Proses secara Preorder (Right(P)) */ { /* KAMUS LOKAL */ /* ALGORITMA */ if (IsTreeEmpty(P)) then /* Basis-0 */ /* do nothing */ else { /* Rekurens, tidak kosong */ Proses(P); PreOrder(Left(P)); PreOrder(Right(P)); 22

Contoh - PrintPreorder void PrintPreorder (BinTree P) /* I.S. P terdefinisi */ /* F.S. Semua simpul P sudah dicetak secara preorder: akar, pohon kiri, dan pohon kanan. Setiap pohon ditandai dengan tanda kurung buka dan kurung tutup (). Pohon kosong ditandai dengan (). */ { /* Kamus Lokal */ /* Algoritma */ printf("("); if (IsTreeEmpty(P)) { /* do nothing */ else { printf("%d",akar(p)); PrintPreorder(Left(P)); PrintPreorder(Right(P)); printf(")"); 23

Traversal - Inorder void InOrder (BinTree P) /* I.S. Pohon P terdefinisi */ /* F.S. Semua node pohon P sudah diproses secara inorder: kiri, akar, kanan */ /* Basis : Pohon kosong : tidak ada yang diproses */ /* Rekurens : Proses secara inorder (Left(P)); Proses Akar(P); Proses secara inorder (Right(P)) */ { /* KAMUS LOKAL */ /* ALGORITMA */ if (IsTreeEmpty(P)) then /* Basis-0 */ /* do nothing */ else { /* Rekurens, tidak kosong */ InOrder(Left(P)); Proses(P); InOrder(Right(P)); 24

Traversal Post-order void PostOrder (BinTree P) /* I.S. Pohon P terdefinisi */ /* F.S. Semua node pohon P sudah diproses secara postorder: kiri, kanan, akar */ /* Basis : Pohon kosong : tidak ada yang diproses */ /* Rekurens : Proses secara postorder (Left(P)); Proses secara postorder (Right(P)); Proses Akar(P); */ { /* KAMUS LOKAL */ /* ALGORITMA */ if (IsTreeEmpty(P)) then /* Basis-0 */ /* do nothing */ else { /* Rekurens, tidak kosong */ PostOrder(Left(P)); PostOrder(Right(P)); Proses(P); 25