Struktur Data dan Algoritma

dokumen-dokumen yang mirip
Struktur Data & Algoritma

Struktur Data & Algoritma

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

IKI 20100: Struktur Data & Algoritma

KUM 6 IMPLEMENTASI BINARY TREE

Sorting. Struktur Data dan Algoritma. Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) Fasilkom UI

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

Algoritma dan Struktur Data. Linear & Binary Search Tree

Politeknik Elektronika Negeri Surabaya

ANALISIS ALGORITMA BINARY SEARCH

IKI 20100: Struktur Data & Algoritma

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

IT234 Algoritma dan Struktur Data. Tree

Binary Tree kosong Gambar 1. Binary Tree dalam kondisi kosong

Struktur Data dan Algoritma

Outline. Struktur Data & Algoritme (Data Structures & Algorithms) Pengantar. Definisi. 2-3 Trees

HEAP. Heap dan Operasinya. Oleh Andri Heryandi

(Binary) Heap. Binary tree yang menyimpan pasangan prioritas (atau prioritas elemen) pada node Property Heap :

BINARY SEARCH TREE. TUJUAN UMUM Mahasiswa memahami binary search Tree

Algoritma dan Struktur Data. Tree

Everybody in this country should learn how to program a computer because it teaches you how to think. Steve Jobs

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

13/12/2013. Binary Tree. Contoh Tree

ALGORITMA DAN STRUKTUR DATA

METODE AVL TREE UNTUK PENYEIMBANGAN TINGGI BINARY TREE

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

Ujian Tengah Semester Struktur Data dan Algoritma Fakultas Ilmu Komputer, Universitas Indonesia 9 November 2006

Struktur Data dan Algoritma

Struktur Data dan Algoritma

MODUL PRAKTIKUM STRUKTUR DATA

Outline STRUKTUR DATA. VII. Sorting

Modul 4: Iteratif & Rekursif, Binary Tree

Kasus Penggunaan Stack: Komputasi Ekspresi Aritmatika

Politeknik Elektronika Negeri Surabaya

Lecture Notes On Algorithms and Data Structures. Oleh Thompson Susabda Ngoen

BAB XI Manipulasi Binary Tree

Soal Pendahuluan Modul 3

Struktur Data Tree/Pohon dalam Bahasa Java

Penerapan Divide and Conquer dalam Membandingkan Alur Proses 2 Source Code

Binary Search Tree (BST)

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II

Syarif Abdullah (G )

1 Bagian 1: Mencetak isi binary tree

IKI 20100: Struktur Data & Algoritma

Organisasi Berkas Sekuensial Berindeks

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

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

Politeknik Elektronika Negeri Surabaya

Pemrograman Algoritma Dan Struktur Data

A B C E F G K Contoh Tree

Algoritma Pemrograman & Struktur Data

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

Variasi Pohon Pencarian Biner Seimbang

BAB IX TREE (POHON) ISTILAH DASAR

Pohon dan Pohon Biner

Algoritma dan Struktur Data. Click to edit Master subtitle style Konsep Tree

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

Membuat Binary Search Tree Menggunakan STL Vector C++

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

Pertemuan 9 STRUKTUR POHON & KUNJUNGAN POHON BINER

STRUKTUR POHON & KUNJUNGAN POHON BINER

Tree (Struktur Data) Nisa ul Hafidhoh, MT

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

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

TREE STRUCTURE (Struktur Pohon)

MAKALAH STRUKTUR DATA HEAP SORT. Disusun Oleh :

Praktikum Algoritma dan Setruktur Data

Pohon Biner dan Aplikasinya

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

Penerapan Pohon Untuk Memanipulasi dan Meritrieve Data

Pemodelan dan Pengelolaan Data Klasifikasi Tanaman Menggunakan Pohon

Algoritma dan Struktur Data. Pertemuan 8 Doubly Linked List

SORTING (Pengurutan)

Penerapan Pohon Dalam Heap Sort

1. Algoritma Searching

Pohon (Tree) Universitas Gunadarma Sistem Informasi 2012/2013

Algoritme dan Pemrograman

SEARCHING. Pusat Pengembangan Pendidikan Universitas Gadjah Mada 1

Struktur Data dan Algoritma

Buku Ajar Struktur Data

ANALISA RUNNING TIME

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

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

Heap Tree dan Kegunaannya dalam Heap Sort

Pohon Biner (Bagian 1)

Data Structure STRUKTUR DATA QUEUE. Chapter 3. Dahlia Widhyaestoeti, S.Kom

6. TREE / BINARY TREE

Algoritma Sorting (Selection Insertion)

Penerapan Teknik Binary Search Tree Sebagai Alternatif Penyimpanan Data

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

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

PENCARIAN KITAB BESERTA PASAL PADA ALKITAB BERDASARKAN KATA DENGAN MENGGUNAKAN STRUKTUR DATA TRIE

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

STRUKTUR DATA. Literatur

Algoritma Heap Sort. Sekolah Teknik Elektro & Informatika Departemen Teknik Informatika, Institut Teknologi Bandung Jl. Ganesha 10, Bandung

Politeknik Elektronika Negeri Surabaya

Ujian Akhir Semester Ganjil 2013/2014

BAB IV POHON. Diktat Algoritma dan Struktur Data 2

Jurnal Mahajana Informasi, Vol.1 No 2, 2016 e-issn: SIMULASI PENGURUTAN DATA DENGAN ALGORITMA HEAP SORT

SORTING (BAGIAN II) Proses kelima

Transkripsi:

Struktur Data dan Algoritma Binary Search Tree Suryana Setiawan, Ruli Manurung & Ade Azurat ( Denny (acknowledgments: Fasilkom UI SUR HMM AA Fasilkom UI - IKI20100/ IKI80110P 2009/2010 Ganjil Minggu 9

Tujuan ( BST ) Memahami sifat dari Binary Search Tree Memahami operasi-operasi pada BST Memahami kelebihan dan kekurangan dari BST 2

Outline ( BST ) Properties of Binary Search Tree Operation Insert find remove 3

Properties of Binary Search Tree Untuk setiap node X pada tree, nilai elemen pada subtree sebelah kiri selalu lebih kecil dari elemen node X dan nilai elemen pada subtree sebelah kanan selalu lebih besar dari elemen node X. Jadi object elemen harus comparable. X <X >X 4

Binary Search Tree 7 2 1 5 6 3 9 5

Binary Search Tree 7 2 9 1 5 3 6 6

Binary Search Tree 3 3 1 1 2 1 2 3 1 2 3 2 2 1 3 7

Basic Operations insert findmin and findmax remove cetak terurut 8

Print InOrder class BinaryNode { void printinorder( ) { if( left!= null ) left.printinorder( ); } } System.out.println( element ); if( right!= null ) right.printinorder( ); // Left // Node // Right class BinaryTree { public void printinorder( ) { if( root!= null ) root.printinorder( ); } } 9

Insertion Penyisipan sebuah elemen baru dalam binary search tree, elemen tersebut pasti akan menjadi leaf 10 2 15 1 5 12 3 6 14 10

Insertion: algorithm Menambah elemen X pada binary search tree: mulai dari root. Jika X lebih kecil dari root, maka X harus diletakkan pada sub-tree sebelah kiri. jika X lebih besar dari root, then X harus diletakkan pada sub-tree sebelah kanan. Ingat bahwa: sebuah sub tree adalah juga sebuah tree. Maka, proses penambahan elemen pada sub tree adalah sama dengan penambahan pada seluruh tree. (melalui root tadi) Apa hubungannya? permasalahan ini cocok diselesaikan secara rekursif. 11

Insertion BinaryNode insert(int x, BinaryNode t) { if (t == null) { t = new BinaryNode (x, null, null); } else if (x < t.element) { t.left = insert (x, t.left); } else if (x > t.element) { t.right = insert (x, t.right); } else { throw new DuplicateItem( exception ); } return t; } 12

FindMin Mencari node yang memiliki nilai terkecil. Algorithm: (:. buntu ke kiri terus sampai Code: BinaryNode findmin (BinaryNode t) { if (t == null) throw exception; } while (t.left!= null) { t = t.left; } return t; 13

FindMax Mencari node yang memiliki nilai terbesar Algorithm? Code? 14

Find Diberikan sebuah nilai yang harus dicari dalam sebuah BST. Jika ada elemen tersebut, return node tersebut. Jika tidak ada, return null. Algorithm? 7 Code? 9 2 1 5 3 6 15

Remove Kasus 1: jika node adalah leaf (tidak punya anak), langsung saja dihapus. Kasus 2: jika node punya satu anak: node parent menjadikan anak dari node yang dihapus (cucu) sebagian anaknya. (mem-bypass node yang dihapus). Kasus 3: jika node punya dua anak.. 16

Remove 8 4 Kasus 3 12 1 6 Kasus 2 3 5 Kasus 1 17

Removing 6 8 4 12 1 6 3 5 18

After 6 removed 8 4 12 1 6 3 5 19

(. lanj ) Remove Bagaimana bila node punya dua anak? 1. Hapus isi node (tanpa mendelete node) 2. Gantikan posisinya dengan: Succesor Inorder node terkecil dari sub tree kanan, dilanjutkan dengan melakukan removemin di subtree kanan. [Alternatif: dengan kaidah Predecesor Inorder, 2. Gantikan posisinya dengan: Predecesor Inorder, node terbesar dari sub tree kiri, dilanjutkan dengan melakukan removemax di subtree kiri.] 20

Removing 2 (Sucessor Inorder) Cari node berisi 2 7 2 9 1 5 3 4 21

Removing 2 (Sucessor Inorder) 2 7 9 1 5 Cari sucessor Indorder 3 4 22

Removing 2 (Sucessor Inorder) Gantikan posisi yang dihapus 7 9 1 5 3 4 23

After 2 deleted 7 3 9 1 5 Hapus node ini 4 24

Removing Root 79 2 1 5 3 12 10 14 9 11 4 25

removemin BinaryNode removemin(binarynode t) { if (t == null) throw exception; } if (t.left!= null) { t.left = removemin (t.left); } else { t = t.right; } return t; 26

Remove BinaryNode remove(int x, BinaryNode t) { if (t == null) throw exception; if (x < t.element) { t.left = remove(x, t.left); } else if (x > t.element) { t.right = remove(x, t.right); } else if (t.left!= null && t.right!= null) { t.element = findmin(t.right).element; t.right = removemin(t.right); } else { t = (t.left!= null)? t.left : t.right; } return t; } 27

removemax code? 28

Find k-th element X X X S R S R S R S L S L S L k < S L + 1 k == S L + 1 k > S L + 1 29

Find k-th element BinaryNode findkth(int k, BinaryNode t) { if (t == null) throw exception; int leftsize = (t.left!= null)? t.left.size : 0; } if (k <= leftsize ) { return findkth (k, t.left); } else if (k == leftsize + 1) { return t; } else { return findkth ( k - leftsize - 1, t.right); } 30

Analysis Running time: insert? Find min? remove? Find? ( O(n Worst case: 31

Rangkuman Binary Search Tree menjamin urutan elemen pada tree. Tiap node harus comparable Semua operasi membutuhkan O(log n) - average case, saat tree relatif balance. Semua operasi membutuhkan O(n) - worst case, tinggi dari tree sama dengan jumlah node. 32

Selanjutnya: Sejauh ini struktur Binary Search terbentuk dengan asumsi data cukup acak sehingga seluruh bagian tree akan cukup terisi. Benarkah asumsi tersebut? Jika tidak benar, maka akan terbentuk tree yang tidak balance yang berakibat tidak tercapainya performance O(log n) Solusi? Dalam kuliah yad akan dibahas struktur binary tree dengan kemampuan autobalancing AVL tree 33