Membuat Binary Search Tree Menggunakan STL Vector C++

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

Politeknik Elektronika Negeri Surabaya

Binary Search Tree (BST)

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

Manage Sort STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 4 : 30 Juni 2015

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

13/12/2013. Binary Tree. Contoh Tree

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

BAB VII POHON BINAR POHON

ALGORITMA DAN STRUKTUR DATA

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

MODUL PRAKTIKUM STRUKTUR DATA

TREE STRUCTURE (Struktur Pohon)

Tree (Struktur Data) Nisa ul Hafidhoh, MT

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

KUM 6 IMPLEMENTASI BINARY TREE

Binary Tree kosong Gambar 1. Binary Tree dalam kondisi kosong

Struktur Data & Algoritma

Algoritma dan Struktur Data. Tree

Penerapan Divide and Conquer dalam Membandingkan Alur Proses 2 Source Code

Algoritma dan Struktur Data. Linear & Binary Search Tree

STL DLL STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 3 : 29 Juni 2015

Soal Pendahuluan Modul 3

Pohon dan Pohon Biner

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

Stack STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 5 : 6 Juli 2015

STL DLL STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 3 : 27 Juni 2016

BAB IX TREE (POHON) ISTILAH DASAR

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

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

ANALISIS ALGORITMA BINARY SEARCH

LAPORAN PRAKTIKUM RESMI QUEUE

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II

ARRAY PENGANTAR PROGRAM STUDI. Institut Teknologi Sumatera

Pohon Biner (Bagian 1)

IT234 Algoritma dan Struktur Data. Tree

PEMROGRAMAN BERORIENTASI OBJEK. Operator. Budhi Irawan, S.Si, M.T

JURUSAN SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO PURWOKERTO 2014

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

PENGANTAR KOMPUTER & SOFTWARE II. Array (Part II) Tim Pengajar KU Institut Teknologi Sumatera

INF-103 Pemrograman II VECTOR & STRING. Dr. Taufik Fuadi Abidin, M.Tech Irvanizam Zamanhuri, M.Sc. Program Studi Informatika FMIPA UNIVERSITAS KUALA

Bahasa Pemrograman :: Object Oriented Programming

Struktur Data dan Algoritma

Algoritma Pemrograman & Struktur Data

Queue Priority Queue STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 6 : 7 Juli 2015

Pemrograman Berorientasi Obyek (C++) Departemen Ilmu Komputer FMIPA IPB 2013

REVIEW ARRAY. Institut Teknologi Sumatera

PEMROGRAMAN BERORIENTASI OBJEK. Tipe Data. Budhi Irawan, S.Si, M.T

PERCABANGAN P E N G E N A L A N P R O G R A M S T U D I T E K N I K I N F O R M AT I K A. Institut Teknologi Sumatera

Array dan Vector Linked List STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 2 : 23 Juni 2015

Algoritma Pemrograman & Struktur Data

Struktur Data Tree/Pohon dalam Bahasa Java

Pertemuan 9 STRUKTUR POHON & KUNJUNGAN POHON BINER

BAB VII Tujuan 7.1 Deskripsi dari Binary Tree

Aplikasi Pohon Pencarian Biner Seimbang sebagai Memo Table Dynamic Programming

Modul 4: Iteratif & Rekursif, Binary Tree

Studi Digital Tree dan Aplikasinya pada Kamus

IKI 20100: Struktur Data & Algoritma

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

Penerapan BFS dan DFS dalam Garbage Collection

Pendahuluan Struktur Data STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 1 : 20 Juni 2016

PENGANTAR KOMPUTER & SOFTWARE II PERCABANGAN

Politeknik Elektronika Negeri Surabaya

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

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

PENGANTAR KOMPUTER & SOFTWARE II PERCABANGAN

A B C E F G K Contoh Tree

LINKED LIST. TUJUAN UMUM Memahami konsep linked list TUJUAN KHUSUS

Data structure :Metode LINK LIST. Kusnawi, S.Kom, M.Eng STMIK AMIKOM Yogyakarta

Dasar Pemrograman. Visual Studio Program C++ Sederhana. Yoannita, S.Kom.

SUB PROGRAM P E N G A N TA R P R O G R A M S T U D I. Institut Teknologi Sumatera

Organisasi Berkas Sekuensial Berindeks

ALGORITMA DAN STRUKTUR DATA

STRUKTUR POHON & KUNJUNGAN POHON BINER

BAB IV POHON. Diktat Algoritma dan Struktur Data 2

MODUL 6 SINGLE & DOUBLE LINKED LIST

Pemrograman I Bab III Tipe Data, Variabel, dan Operasi Perhitungan. Adam Mukharil Bachtiar, S.Kom. Universitas Komputer Indonesia

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

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

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

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

Spesifikasi: Ukuran: 14x21 cm Tebal: 225 hlm Harga: Rp Terbit pertama: Februari 2005 Sinopsis singkat:

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

3. Elemen Dasar C++ S. Indriani S. L., M.T L.,

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

SENARAI BERANTAI (LINK LIST)

Algoritme dan Pemrograman

PRAKTIKUM 4 PERCABANGAN

BAB XI Manipulasi Binary Tree

File & Stream. Kegunaan File : file : ini. dengan. iostream.h) suatu. stream, Jika. dapat menghubungkan. mendeklarasikan. kita.

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

PEMROGRAMAN BERORIENTASI OBJEK STRUCTURE & CLASS

REPRESENTASI FISIK LIST LINEAR

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

BINARY SEARCH TREE. TUJUAN UMUM Mahasiswa memahami binary search Tree

//Kelas ini berisi data yang hendak disimpan ke dalam database

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

Algoritma dan Struktur Data. Ramos Somya

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

Algoritma dan Struktur Data. Linked List

Transkripsi:

Membuat Binary Search Tree Menggunakan STL Vector C++ Pengantar Binary Tree adalah struktur data tree yang hanya memiliki tepat dua anak (child), yang sering disebut sebagai anak kiri (left child) dan anak kanan (right child). Salah satu jenis binary tree adalah binary search tree (BST) yang banyak digunakan untuk penelusuran data tree yang memiliki sifat bahwa data yang lebih kecil atau sama dengan parent- nya diletakkan sebagai anak kiri, sedangkan data yang lebih besar dari parent- nya diletakkan sebagai anak kanan. Misalkan data yang akan disimpan ke dalam BST berupa karakter H D P A B M R. Maka struktur BST dari data tersebut seperti gambar berikut: Tentu saja, implementasi dari struktur data tree dapat dilakukan dengan berbagai cara. Salah satu struktur data yang dapat digunakan untuk implementasi BST ini adalah menggunakan vektor, dimana elemen vektor berupa node dari BST. Artikel ini membahas implementasi BST menggunakan STL (Standard Template Library) dalam C++, yaitu std::vector. Awal Program Program C++ yang dibuat, tentunya diawali dengan memasukkan beberapa header file yang berisi class yang diperlukan, sebagai berikut: #include <iostream> #include <vector> using namespace std; Struktur Data Untuk membuat BST, dibutuhkan node BST yang minimal berisi tiga komponen, yaitu satu komponen untuk menyimpan nilai node, dan dua komponen untuk menyimpan indeks yang mengarah ke anak kiri dan indeks yang mengarah ke anak kanan. Terkait dengan contoh di atas, maka node dapat didefinisikan dengan tipe data berikut: struct node { char value; int left, right; ; typedef struct node NODE; // nilai node // indeks ke anak kiri dan kanan JULIO ADISANTOSO DEPARTEMEN ILMU KOMPUTER IPB 1

Definisi Class Struktur BST yang memiliki beberapa fungsi, selanjutnya dikemas dalam bentuk class seperti kode di bawah ini. Perhatikan bahwa nilai indeks - 1 merepresentasikan pointer NULL. class BST { vector<node> tree; int root; public: BST() { root=-1; bool isempty() { return tree.empty(); int getroot() { return root; void makeroot(char avalue); void leftchild(unsigned int curr, char avalue); void rightchild(unsigned int curr, char avalue); void insert(char avalue); void inordertraversal(unsigned int curr); void preordertraversal(unsigned int curr); void postordertraversal(unsigned int curr); ; Class BST berisi dua atribut data, yaitu: (1) tree berupa vektor dimana setiap elemen vektor berisi nilai node (value), indeks ke anak kiri (left), dan indeks ke anak kanan (right); (2) indeks untuk root. Dengan struktur seperti ini, maka gambar BST di atas dapat direpresentasikan dalam bentuk tabel vektor sebagai berikut: index value left right 0 H 1 2 1 D 3 4 2 P 5 6 3 A - 1-1 4 B - 1-1 5 M - 1-1 6 R - 1-1 Implementasi Fungsi Anggota Membuat dan Mengisi BST Untuk dapat menyusun implementasi setiap fungsi anggota class BST, dapat dibayangkan terlebih dahulu aplikasi dari class BST tersebut sebagai berikut: int main() { BST mytree; mytree.makeroot('h'); mytree.insert('d'); mytree.insert('p'); mytree.insert('a'); mytree.insert('b'); mytree.insert('m'); mytree.insert('r'); int root=mytree.getroot(); mytree.inordertraversal(root); mytree.preordertraversal(root); mytree.postordertraversal(root); return 0; 2 JULIO ADISANTOSO DEPARTEMEN ILMU KOMPUTER IPB

Instruksi BST mytree; adalah mendefinisikan suatu obyek BST yang diberi nama mytree. Oleh karena itu, pada saat instruksi tersebut dijalankan, berarti dibuat sebuah BST dimana root dari tree tersebut adalah NULL. Ingat bahwa NULL direpresentasikan dengan nilai - 1. Oleh karena itu, default constructor dari class BST seperti yang tertulis pada definisi class, yaitu: BST() { root=-1; Instruksi mytree.makeroot('h'); adalah membuat BST pertama kali dimana nilai H sebagai root- nya (node paling atas dari tree). Oleh karena itu, implementasi fungsi anggota makeroot adalah: void BST::makeRoot(char avalue) { NODE t={avalue, -1, -1; tree.push_back(t); root=0; Dengan demikian, fungsi anggota insert(elemen); dapat dilakukan terhadap BST yang sudah memiliki root (sudah dijalankan fungsi makeroot(elemen);). Hal ini terlihat pada instruksi awal fungsi anggota insert(elemen); berikut: void BST::insert(char avalue) { if (isempty()) { cout << "Tree is not made yet. Please makeroot first...\n"; return; unsigned int curr = root; while (curr<tree.size()) { if (avalue<=tree[curr].value) { if (tree[curr].left == -1) { leftchild(curr, avalue); break; else curr = tree[curr].left; else { if (tree[curr].right == -1) { rightchild(curr, avalue); break; else curr = tree[curr].right; Pernyataan: if (isempty()) { cout << "Tree is not made yet. Please makeroot first...\n"; return; diperlukan untuk memeriksa apakah BST tersebut sudah memiliki root (tree kosong atau tidak). Jika kosong, maka proses dihentikan (pernyataan return;). JULIO ADISANTOSO DEPARTEMEN ILMU KOMPUTER IPB 3

Selanjutnya dilakukan penelusuran (traversal) yang dimulai dari root melalui instruksi: unsigned int curr = root; Penelusuran dilakukan selama indeks dari node masih dalam rentang ukuran vektor, yaitu dengan instruksi pengulangan: while (curr<tree.size()) { Pada setiap kunjungan ke node dalam BST, dilakukan pemeriksaan terhadap nilai node. Jika data yang akan dimasukkan lebih kecil atau sama dengan nilai node yang ada, maka penelusuran dilanjutkan ke anak kiri. Sebaliknya, jika data lebih besar dari node yang ada, maka penelusuran dilanjutkan ke anak kanan. Demikian seterusnya sampai ditemukan node yang terakhir (leaf). Dengan demikian, data baru ini akan dibuat sebagai anak kiri atau anak kanan dari node yang terakhir tersebut. BST Traversal Yang dimaksud dengan BST Traversal ini adalah menelusuri atau mengunjungi setiap node dengan aturan tertentu. Ada tiga jenis traversal yang dikenal, yaitu: (1) In Order, (2) Pre Order, dan (3) Post Order. In Order Traversal Prosedur in order traversal ini melakukan kunjungan secara rekursif: (a) pergi ke kiri sampai leaf, (b) tulis isi node, dan (c) pergi ke kanan sampai leaf. Hal ini dilakukan secara rekursif sampai semua node ditulis. Dengan demikian, implementasi fungsi anggota in order traversal sebagai berikut: void BST::inOrderTraversal(unsigned int curr) { inordertraversal(tree[curr].left); inordertraversal(tree[curr].right); Pre Order Traversal Prosedur pre order traversal ini melakukan kunjungan secara rekursif: (a) tulis isi node, (b) pergi ke kiri sampai leaf, dan (c) pergi ke kanan sampai leaf. Hal ini dilakukan secara rekursif sampai semua node ditulis. Dengan demikian, implementasi fungsi anggota pre order traversal sebagai berikut: void BST::preOrderTraversal(unsigned int curr) { preordertraversal(tree[curr].left); preordertraversal(tree[curr].right); 4 JULIO ADISANTOSO DEPARTEMEN ILMU KOMPUTER IPB

Post Order Traversal Prosedur post order traversal ini melakukan kunjungan secara rekursif: (a) pergi ke kiri sampai leaf, (b) pergi ke kanan sampai leaf, dan (c) tulis isi node,. Hal ini dilakukan secara rekursif sampai semua node ditulis. Dengan demikian, implementasi fungsi anggota post order traversal sebagai berikut: void BST::postOrderTraversal(unsigned int curr) { postordertraversal(tree[curr].left); postordertraversal(tree[curr].right); JULIO ADISANTOSO DEPARTEMEN ILMU KOMPUTER IPB 5