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

dokumen-dokumen yang mirip
Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

Penerapan Teknik Binary Search Tree Sebagai Alternatif Penyimpanan Data

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

Binary Tree kosong Gambar 1. Binary Tree dalam kondisi kosong

ANALISIS ALGORITMA BINARY SEARCH

13/12/2013. Binary Tree. Contoh Tree

Politeknik Elektronika Negeri Surabaya

Struktur Data dan Algoritma

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

Gambar 1. Single Linked List

Algoritma dan Struktur Data. Linear & Binary Search Tree

KUM 6 IMPLEMENTASI BINARY TREE

Struktur Data & Algoritma

Gambar 1. Single Linked List

Struktur Data Tree/Pohon dalam Bahasa Java

Struktur Data & Algoritma

Gambar 1. Single Linked List

Praktikum Algoritma dan Setruktur Data

A. TUJUAN PEMBELAJARAN 1. Mengenal berbagai macam bentuk operator 2. Memahami penggunaan berbagai macam jenis operator yang ada di Java

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

Soal Pendahuluan Modul 3

Dasar Pemrograman Java

Gambar 1. Langkah-langkah pengurutan metode Insertion Sort (1)

Tree (Struktur Data) Nisa ul Hafidhoh, MT

Gambar 17.1Representasi Sebuah Node di Double Linked List. Gambar 17.2 Double Linked List

Membuat Binary Search Tree Menggunakan STL Vector C++

IT234 Algoritma dan Struktur Data. Tree

Aplikasi Divide and Conquer pada: 1. Grafika Komputer 2. Evaluasi expression tree. Oleh: Rinaldi Munir Informatika STEI-ITB

Pohon dan Pohon Biner

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

ALGORITMA DAN STRUKTUR DATA

B. DASAR TEORI AlGORITMA TRAVERSAL GRAPH Terdapat beberapa perbedaan Tree dan Graph dijelaskan pada tabel Tabel 31.1 Perbedaan Tree dan Graph

MODUL PRAKTIKUM STRUKTUR DATA

BAB XI Manipulasi Binary Tree

Modul 4: Iteratif & Rekursif, Binary Tree

Politeknik Elektronika Negeri Surabaya

Operator dan Assignment

Gambar 1. Single Linked List

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 1)

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

Pemrograman Berbasis Objek Operator dan Assignment

Penerapan Divide and Conquer dalam Membandingkan Alur Proses 2 Source Code

Politeknik Elektronika Negeri Surabaya

Single Linked List. Single Linked List

Operator, Statement kondisional, dan Iterasi pada Java

Double Linked List mempunyai reference front untuk menandai awal node dan reference back untuk menandai akhir list

Implementasi Skema Pohon Biner yang Persistent dalam Pemrograman Fungsional

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 2)

Gambar 1. Ilustrasi Stack

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

A. TUJUAN PEMBELAJARAN 1. Memahami konsep dan operasi pada Stack. 2. Mampu mengimplementasikan struktur data Stack pada array dan List.

Politeknik Elektronika Negeri Surabaya

IKI 20100: Struktur Data & Algoritma

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Pertemuan 9 STRUKTUR POHON & KUNJUNGAN POHON BINER

STRUKTUR POHON & KUNJUNGAN POHON BINER

Aplikasi Pohon Pencarian Biner Seimbang sebagai Memo Table Dynamic Programming

Pemanfaatan Algoritma BFS pada Graf Tak Berbobot untuk Mencari Jalur Terpendek

BINARY SEARCH TREE. TUJUAN UMUM Mahasiswa memahami binary search Tree

Binary Search Tree (BST)

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

ARRAY. 7 th week Estu Sinduningrum ST,MT

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA QUEUE

TREE STRUCTURE (Struktur Pohon)

Praktikum Stack. A. Stack Collection di java.util.collection. Percobaan 1. Percobaan 2. import java.util.iterator; import java.util.

METODE POHON BINER HUFFMAN UNTUK KOMPRESI DATA STRING KARAKTER

C. TUGAS PENDAHULUAN Buatlah resume 1 halaman mengenai Priority Queue dan berikan penjelasannya.!

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

IKI 20100: Struktur Data & Algoritma

LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN ( Implementasi Rekursi Pada Java)

Algoritma dan Struktur Data. Tree

BAB IX TREE (POHON) ISTILAH DASAR

Politeknik Elektronika Negeri Surabaya

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA FAKULTAS ILMU KOMPUTER UNIVERSITAS BRAWIJAYA

Struktur Data. PDE - Struktur Data 1

Topic Complexity of Hashing Search & Binary Search Tree Algorithm

Pohon Biner (Bagian 1)

1 Bagian 1: Mencetak isi binary tree

Algoritma dan Struktur Data. Queue

POHON CARI BINER (Binary Search Tree)

Percabangan & Perulangan

Optimalisasi Algoritma Pencarian Data Memanfaatkan Pohon Biner Terurut

Ringkasan mengenai Tree (Dari beberapa referensi lain) Nina Valentika

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

Pemrograman Berorientasi Obyek. Operator & Assignment

A. TUJUAN PEMBELAJARAN

Praktikum Blind Search (BFS dan DFS)

Politeknik Elektronika Negeri Surabaya

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya

OPERASI LOGIKA PADA GENERAL TREE MENGGUNAKAN FUNGSI REKURSIF

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

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

Analisis Penerapan Algoritma Backtracking Pada Pencarian Jalan Keluar di Dalam Labirin

KA2173 Pemrograman Berorientasi Objek. 10 BAB X PENGAKSESAN DATABASE. H a l 64

INFIX, POSTFIX, dan PREFIX Bambang Wahyudi

Pohon (Tree) Universitas Gunadarma Sistem Informasi 2012/2013

Pemrograman Algoritma Dan Struktur Data

Transkripsi:

PRAKTIKUM 27 BINARY SEARCH TREE A. TUJUAN Mahasiswa diharapkan mampu : 1. Memahami Konsep Binary Search Tree 2. Mengimplementasaikan Binary Search Tree B. DASAR TEORI Binary search tree adalah salah satu bentuk dari pohon. Di mana masing-masing pohon tersebut hanya memiliki dua buah upapohon, yakni upapohon kiri dan upapohon kanan.ciri khas yang melekat pada binary search tree ini yang bisa juga dibilang sebagai keunggulan dari binary search tree adalah peletakan isi dari nodenya yang terurut berdasarkan besarnya dari isinya tersebut. Isinya bisa saja berupa integer, karakter, atau apapun sesuai dengan spesifikasi binary search tree yang ada. Operasi dasar dari binary search tree(bst) ini sendiri sangatlah sederhana, yakni hanya fungsi perbandingan dan fungsi rekursif. Di mana anak pohon sebelah kiri node adalah anak pohon yang lebih kecil dari node, sedangkan anak pohon sebelah kanan node memiliki isi yang lebih besar daripada isi node. Biasanya penyimpanan data di dalam binary search tree ini bisa juga berupa record di mana pengurutannya hanya tinggal melihat key dari record tersebut, missal nomor absen, NIM, tanggal, dll. Pada gambar 1 merupakan contoh Binary Search Tree, pada subtree kiri semua node mempunyai value lebih kecil dari root dengan value 25, sedangkan subtree kanan semua node mempunyai value lebih besar dari root dengan value 25. Pada Binary Search Tree, strategi penambahan Node baru adalah sebagai berikut: 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) Jika anak kiri current node tidak null, maka ubah current node ke anak kiri tersebut, lakukan langkah 1. 2) Jika anak kiri current node adalah null, maka tambahkan node baru tersebut sebagai anak kiri dari current node 198

3. Jika value dari node baru lebih besar dari value dari current node maka : 1) Jika anak kanan current node tidak null, maka ubah current node ke anak kanan tersebut, lakukan langkah 1. 2) Jika anak kanan current node adalah null, maka tambahkan node baru tersebut sebagai anak kanan dari current node Gambar 1. Contoh Binary Search Tree Pada gambar 2 merupakan step by step penambahan node baru pada Binary Search Tree. Pertama ditambahkan node dengan value 35. Karena root masih null, maka node 35 menjadi root. Selanjutnya ditambahkan node 18. Pengecekan dimulai dari root, node 18 lebih kecil dibandingkan dengan node 35, dan node 35 tidak mempunyai anak kiri, sehingga node 18 menjadi anak kiri dari node 35. Selanjutnya ditambahkan node 25. Pengecekan dimulai dari root, node 25 lebih kecil dibandingkan dengan node 35, sehingga pengecekan selanjutnya ke anak kiri dari node 35 yaitu node 18. Node 25 lebih besar dibandingkan dengan node 18, karena node 18 tidak mempunyai anak kanan, sehingga node 25 menjadi anak kanan dari node 18. Selanjutnya ditambahkan node 48. Pengecekan dimulai dari root, node 48 lebih besar dibandingkan dengan node 35, karena node 35 tidak mempunyai anak kanan, sehingga node 48 menjadi anak kanan dari node 35. Selanjutnya ditambahkan node 20. Pengecekan dimulai dari root, node 20 lebih kecil dibandingkan dengan node 35, sehingga pengecekan selanjutnya ke anak kiri dari node 35 yaitu node 18. Node 20 lebih besar dibandingkan dengan node 18, sehingga pengecekan selanjutnya ke anak kanan dari node 18 yaitu node 25. Node 20 lebih kecil dibandingkan dengan node 25, karena node 25 belum mempunyai anak kiri, maka node 20 menjadi anak kiri dari node 25. 199

Gambar 2. Strategi Penambahan Node Baru pada Binary Search Tree Search Method Metode search adalah penentu paling dalam program atau bisa dibilang nyawa dari program database. Kenapa search sangat penting untuk efisien.?bayangkan saja apabila ada miliaran data yang ada di dalam database pada sebuah komputer server dan harus diolah dan selalu harus diupdate setiap hari ataupun diakses pengguna untuk dicari isi data yang diinginkanya. Lalu, yang kita gunakan adalah struktur data yang tidak efisien, di mana suatu saat computer server akan mengalami minimal hang atau yang paling parah adalah server down sehingga tidak bisa diakses dan akhirnya justru membuang waktu bahkan lebih parahnya bisa menyebabkan data dalam harddisk server menghilang. Tentunya kita sangat menghindari hal semacam itu terjadi bukan. Metode Search sendiri ada banyak, seperti yang sudah sempat disinggung sedikit pada pendahuluan. Bahwa search macamnya ada linear search, binary search, binary search tree, dll. Di sini hanya akan dibahas 3 contoh tersebut. Linear search merupakan tipe search yang paling mendasar dalam dunia search. Pada dasarnya linear search ini sangat sederhana. Yakni memulai pencarian dari elemen pertama kemudian bergeser terus ke elemen berikutnya hingga menemukan isi elemen yang dicari. Apabila elemen yang dicari tidak ada, maka linear search akan terus melakukan traversal hingga elemen terakhir. Mari kita bayangkan apabila terdapat banyak sekali data yang harus ditraversal dan data yang dicar itidak ada di dalam database(worst case possibility). Efektivitas dari linear search ini adalah dengan O(n) worst case tergantung dari jumlah elemen yang ada di dalam database tersebut. Metode search yang berikutnya yakni binary search, bedanya binary search dari linear search adalah dengan pembagian jumlah elemen menjadi dua bagian. Sehingga pencarian bisa lebih efektif dengan cara membagi pencarian ke 200

dua arah. Worst case dari binary search ini adalah O(log n) sehingga cara ini bisa dibilang cukup efisien. Metode search yang terakhir adalah binary search tree (sebenarnya bukan merupakan metode search). binary search tree memiliki kompleksitas algoritma O(log n) yang tidak ada bedanya dengan metode binary search. Tetapi seharusnya metode search pada binary search tree bisa lebih singkat, karena jalur yang dipilih sudah tergolong spesifik, sehingga tidak perlu memeriksa semua elemen untuk mencari elemen tertentu. Implementasi dari Binary Search Tree Sebuah Node pada Binary Search Tree direpresentasikan dengan sebuah objek dari Class STNode seperti ditunjukkan pada gambar 3. Sebuah Node terdiri dari 4 bagian yaitu Data value disebut nodevalue Variabel reference left sebagai anak kiri Variabel reference right sebagai anak kanan Variabel reference parent sebagai parent dari Node tersebut Gambar 3. Objek dari Class STNode Pada gambar 4 adalah UML dari Class STNode<T>. Pada gambar 5 terdapat contoh bentuk tree dan bentuk Node-Node Tree yang direpresentasikan dengan objek STree. public class STNode<T> public T nodevalue; public STNode<T> left, right; public STNode<T> parent ; Gambar 4. UML dari Class STNode<T> 201

public STNode(T item) nodevalue = item; left = right = null; public STNode(T item, STNode<T> parent) nodevalue = item; left = right = null; this.parent = parent ; public STNode (T item, STNode<T> left, STNode<T> right) nodevalue = item; this.left = left; this.right = right; Gambar 5. Representasi STNode dari Binary Search Tree C. TUGAS PENDAHULUAN 1. Buatlah resume 1 halaman mengenai Binary Search Tree 2. Buatlah Binary Search Tree dari node node 30, 15, 17, 36, 67, 30, 69. D. PERCOBAAN Pada percobaan ini buatlah class Binary Search Tree seperti tabel 1. Tabel 1. Variabel dan Method pada Class Binary Search Tree Class Binary Search Tree<T> private STNode<T> root; Variabel reference ke root 202

private int treesize; public boolean add(t item) public STNode<T> findnode(t item) public boolean find(t item) public T first() public T last() public STNode<T> getroot() public int gettreesize() Variable untuk mengetahui jumlah node pada binary search tree Method add() untuk menambahkan node baru ke binary search tree. Mengembalikan nilai true jika node baru berhasil ditambahkan, mengembalikan nilai false jika node baru sudah terdapat pada binary search tree. Method findnode() untuk mencari sebuah node dengan item tertentu dengan mengembalikan alamat dari node tersebut. Method find () untuk mencari sebuah node dengan item tertentu dengan mengembalikan nilai true jika ada item tersebut, nilai false jika tidak ada. Method first() untuk mendapatkan nilai terkecil dari node-node yang terdapat pada binary search tree. Method last() untuk mendapatkan nilai terbesar dari node-node yang terdapat pada binary search tree. Method getroot() untuk mendapatkan alamat reference dari root Method gettreesize() untuk mendapatkan jumlah node pada Binary Search Tree Percobaan 1. Membuat class BinarySearchTree<T>, konstruktor dan method add().method add() untuk menambahkan node baru ke binary search tree. Mengembalikan nilai true jika node baru berhasil ditambahkan, mengembalikan nilai false jika node baru sudah terdapat pada binary search tree. public class BinarySearchTree<T> private STNode<T> root; private int treesize; public BinarySearchTree() root=null; public boolean add(t item) STNode<T> t = root, parent = null, newnode; int ordervalue = 0; while (t!= null) parent = t; 203

ordervalue = ((Comparable<T>) item).compareto( t.nodevalue); if (ordervalue == 0) return false; else if (ordervalue < 0) t = t.left; else t = t.right; newnode = new STNode<T>(item, parent); if (parent == null) root = newnode; else if (ordervalue < 0) parent.left = newnode; else parent.right = newnode; treesize++; return true; Percobaan 2. Membuat method findnode() untuk mencari sebuah node dengan item tertentu dengan mengembalikan alamat dari node tersebut. public class BinarySearchTree<T> public STNode<T> findnode(t item) STNode<T> t = root, parent = null, newnode; int ordervalue = 0; while (t!= null) ordervalue = ((Comparable<T>) item).compareto( t.nodevalue); if (ordervalue == 0) return t; else if (ordervalue < 0) t = t.left; else t = t.right; return null; 204

Percobaan 3. Mebuat method find () untuk mencari sebuah node dengan item tertentu dengan mengembalikan nilai true jika ada item tersebut, nilai false jika tidak ada. public class BinarySearchTree<T> public boolean find(t item) STNode<T> t = findnode(item); T value = null; if (t!= null) value = t.nodevalue; return true; return false; Selanjutlah ujilah program yang sudah dibuat dengan Class Main seperti dibawah ini: public class Main public static void main(string[] args) BinarySearchTree<Integer> bst = new BinarySearchTree<Integer>(); bst.add(35); bst.add(18); bst.add(25); bst.add(48); bst.add(20); System.out.println(BinaryTree.inorderDisplay(bst.getRoot())); System.out.println(bst.findNode(20)); System.out.println(bst.find(50)); Output program adalah 18 20 25 35 48 20 false E. LATIHAN Latihan 1 : Buatlah method first() untuk mendapatkan nilai terkecil dari node-node yang terdapat pada binary search tree. 205

Latihan 2 : Buatlah method last() untuk mendapatkan nilai terbesar dari node-node yang terdapat pada binary search tree. Latihan 3. Buatlah Binary Search Tree dengan menambahkan node dengan value 10, 5,20,2,6,19,25,21. Kerjakan : Gambarkan hasil akhir binary search tree tersebut! Bacalah Binary Searh Tree dengan Traversal PostOrder Cari node dengan nilai 19. Cari node dengan nilai 55. Tambahkan pada Binary Tree Node baru 56. Dapatkan node dengan nilai terkecil Dapatkan node dengan nilai terbesar F. LAPORAN RESMI Kerjakan hasil percobaan(d) dan latihan(e) di atas dan tambahkan analisa. 206