Struktur Data Tree/Pohon dalam Bahasa Java

dokumen-dokumen yang mirip
Politeknik Elektronika Negeri Surabaya

Binary Tree kosong Gambar 1. Binary Tree dalam kondisi kosong

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II

Pertemuan 9 STRUKTUR POHON & KUNJUNGAN POHON BINER

ALGORITMA DAN STRUKTUR DATA

Ringkasan mengenai Tree (Dari beberapa referensi lain) Nina Valentika

STRUKTUR POHON & KUNJUNGAN POHON BINER

Soal Pendahuluan Modul 3

MODUL PRAKTIKUM STRUKTUR DATA

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

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

Pohon (Tree) Universitas Gunadarma Sistem Informasi 2012/2013

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

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

TREE STRUCTURE (Struktur Pohon)

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

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

BAB IX TREE (POHON) ISTILAH DASAR

BAB VII POHON BINAR POHON

Praktikum Algoritma dan Setruktur Data

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

BAB IV POHON. Diktat Algoritma dan Struktur Data 2

KUM 6 IMPLEMENTASI BINARY TREE

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

Tree (Struktur Data) Nisa ul Hafidhoh, MT

Pemrograman Algoritma Dan Struktur Data

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

Politeknik Elektronika Negeri Surabaya

TREE. Definisi. Istilah-istilah Umum dalam Tree

Pohon dan Pohon Biner

A B C E F G K Contoh Tree

Algoritma dan Struktur Data. Tree

Syarif Abdullah (G )

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

METODE AVL TREE UNTUK PENYEIMBANGAN TINGGI BINARY TREE

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

IT234 Algoritma dan Struktur Data. Tree

13/12/2013. Binary Tree. Contoh Tree

JAWABAN TUGAS MATRIKULASI STRUKTUR DATA. DOSEN Bpk. Krisna Adiyarta, M.Sc

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

Implementasi Skema Pohon Biner yang Persistent dalam Pemrograman Fungsional

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

Organisasi Berkas Sekuensial Berindeks

Pohon Biner (Bagian 1)

Struktur Data & Algoritma

Algoritma dan Struktur Data. Linear & Binary Search Tree

Linked List dan Implementasinya dalam Bahasa Java

Politeknik Elektronika Negeri Surabaya

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

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

ANALISIS ALGORITMA BINARY SEARCH

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

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

BAB VII Tujuan 7.1 Deskripsi dari Binary Tree

BAB XI Manipulasi Binary Tree

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

6. TREE / BINARY TREE

Struktur Data dan Algoritma

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

Pemodelan dan Pengelolaan Data Klasifikasi Tanaman Menggunakan Pohon

OPERASI LOGIKA PADA GENERAL TREE MENGGUNAKAN FUNGSI REKURSIF

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

Pohon Biner dan Aplikasinya

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

Termilogi Pada Pohon Berakar 10 Pohon Berakar Terurut

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

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

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

POHON CARI BINER (Binary Search Tree)

JURUSAN SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO PURWOKERTO 2014

BINARY SEARCH TREE. TUJUAN UMUM Mahasiswa memahami binary search Tree

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

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

Koleksi Hirarkis Tree

Struktur Data & Algoritma

MODUL PRAKTIKUM STRUKTUR DATA

Variasi Pohon Pencarian Biner Seimbang

FAKULTAS TEKNOLOGI KOMUNIKASI DAN INFORMATIKA UNIVERSITAS NASIONAL

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

Aplikasi Pohon pada Pohon Binatang (Animal Tree)

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

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

Membuat Binary Search Tree Menggunakan STL Vector C++

Pertemuan 15 REVIEW & QUIS

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

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

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

Modul 4: Iteratif & Rekursif, Binary Tree

ANALISIS KECEPATAN STRUKTUR DATA LINKED LIST DAN TREE

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

METODE POHON BINER HUFFMAN UNTUK KOMPRESI DATA STRING KARAKTER

Penerapan Pohon Biner dalam Proses Pengamanan Peer to Peer

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

Binary Search Tree (BST)

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA QUEUE

MAKALAH STRUKTUR DATA HEAP SORT. Disusun Oleh :

Aplikasi Pohon Pencarian Biner Seimbang sebagai Memo Table Dynamic Programming

Buku Ajar Struktur Data

Kecerdasan Buatan. Penyelesaian Masalah dengan Pencarian... Pertemuan 02. Husni

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

Transkripsi:

Struktur Data Tree/Pohon dalam Bahasa Java Jeffrey Hermanto Halimsetiawan shadowz_029@yahoo.com.sg tutorialpemrograman.wordpress.com 22 Maret 2009 tutorialpemrograman.wordpress.com - 2009 1

Tree merupakan salah satu bentuk struktur data bukan linier yang menggambarkan bentuk hierarki antara elemen-elemen. Tree biasanya terdiri dari (akar) dan node-node (simpul-simpul) yang berada di bawah. Struktur seperti tree sangat banyak sekali dgunakan dalam dunia nyata, misalnya: struktur organisasi suatu perusahaan, pengaturan filesystem, daftar isi sebuah buku, dan masih banyak lagi. Ilustrasi struktur data tree: A B C D E F G Level 3 H I J K Degree (derajat) adalah jumlah edge yang keluar dan masuk dari sebuah node. Contoh : node E memiliki in degree 1 dan out degree 2 Root (akar) adalah node yang memiliki derajat keluar >=0 dan derajat masuk = 0. Contoh : node A adalah Subtree / child adalah bagian salah satu node dibawah sampai ke bawah. Contoh : tree C adalah right subtree dari A dan tree B merupakan left subtree dari A node G dan F merupakan child dari node C node F merupakan parent dari node J dan K Ancestor adalah Node yang berada di atas node lain. Contoh : node B adalah ancestor dari node E Descendant adalah node yang berada di bawah node lain. Contoh : node E adalah descendant dari node A. tutorialpemrograman.wordpress.com - 2009 2

Leaf (daun) adalah semua node yang derajat masuknya 1 dan derajat keluarnya 0. Contoh : node D, H, I, J, K, dan G adalah leaf Sibling adalah node yang mempunyai level yang sama dan parent yang sama. Contoh : node D adalah sibling dari node A Height (ketinggian) adalah level tertinggi dari tree ditambah 1. Contoh : height dari tree A adalah 3 + 1 = 4 Weight (bobot) adalah jumlah leaf(daun) pada tree. Contoh : weight dari tree A adalah 6 BINARY TREE Sebuah tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal 2 subtree yang disebut sebagai subpohon kiri(left subtree) dan subpohon kanan (right subtree) dan kedua subtree tersebut harus terpisah, atau dengan kata lain tiap node dalam binary tree hanya boleh memiliki paling banyak 2 child. Binary tree terdiri dari : 1. Full Binary Tree : semua node (kecuali leaf pasti memiliki 2 anak dan tiap subtree memiliki panjang path yang sama) A B C D E F G 2. Complete Binary Tree : mirip dengan full binary tree, tetapi tiap subtree boleh memiliki panjang path yang berbeda dan tiap node (kecuali leaf memiliki 2 anak) tutorialpemrograman.wordpress.com - 2009 3

A B C F G 3. Skewed Binary Tree : binary tree yang semua nodenya (kecuali leaf) hanya memiliki satu anak A C G tutorialpemrograman.wordpress.com - 2009 4

BINARY SEARCH TREE Binary tree dengan sifat bahwa nilai dari semua left child harus lebih kecil daripada nilai dari right child dan parentnya. Contoh : 12 < > 5 23 < > 17 35 Contoh Implementasi Binary Search Tree : * Program membuat binary tree yang memiliki 2 anak dimana insertion * dilakukan secara terurut, dimana data yang lebih kecil diletakkan di kiri * dan yang lebih besar diletakkan di kanan. * @author : Jeffrey Hermanto Halimsetiawan * Selasa, 1 April 2008 import java.util.*; class Node{ int data; Node left; Node right; Node(int x){ this.data = x; public class BinTree{ private Node ; * Mengecek apakah tree masih kosong private boolean isempty(){ return ( == null); tutorialpemrograman.wordpress.com - 2009 5

* Memasukkan suatu nilai ke dalam tree. * Jika nilai tersebut lebih kecil dari nilai node, maka bergerak ke kiri terus * hingga menjadi child, begitu juga sebaliknya. public void insert(int input){ Node temp = new Node(input); if (isempty()) = temp; { Node cursor =, parent = null; while (cursor!= null){ parent = cursor; if (input < cursor.data) cursor = cursor.left; cursor = cursor.right; * Menambahkan Node baru pada kiri/kanan Node parent bergantung * pada nilai input dan nilai yang disimpan Node parent if (input < parent.data){ parent.left = temp; return; { parent.right = temp; return; * Mencari suatu nilai dalam tree berdasarkan prinsip : * Selama belum menemukan nilai yang sama, * Jika nilai yang dicari lebih kecil dari nilai yang disimpan dalam Node * maka bergerak ke left Child begitu juga sebaliknya. public Node find(int key){ Node cursor = ; while (cursor!= null){ if (cursor.data == key) return cursor; if (key < cursor.data) cursor = cursor.left; cursor = cursor.right; return null; public boolean delete(int key){ Node cursor =, parent = null; tutorialpemrograman.wordpress.com - 2009 6

boolean found = false, isleftchild = true; //menandai apakah Node yang dihapus merupakan left child if (!isempty()){ while (cursor!= null){ parent = cursor; if (key == cursor.data){ found = true; break; if (key < cursor.data){ isleftchild = true; cursor = cursor.left; { isleftchild = false; cursor = cursor.right; if (!found) return false; { subtree yang dihapus * Untuk menghapus leaf (tidak punya child) if (cursor.left == null && cursor.right == null){ if (cursor == ) = null; if (isleftchild) parent.left = null; parent.right = null; * Jika node yang akan dihapus hanya memiliki salah satu * maka tinggal memindahkan subtree menggantikan node if (cursor.left == null){ if (cursor == ) = cursor.right; if (isleftchild) parent.left = cursor.right; parent.right = cursor.right; if (cursor.right == null){ if (cursor == ) = cursor.left; if (isleftchild) parent.left = cursor.left; parent.right = cursor.left; tutorialpemrograman.wordpress.com - 2009 7

cari successornya bagian kanan return true; * Jika node yang akan dihapus memiliki 2 child, maka * dengan fungsi getsuccessor kemudian hubungkan subtree * dari node yang dihapus dengan successor { Node successor = getsuccessor(cursor); if (cursor == ) = successor; if (isleftchild) parent.left = successor; parent.right = successor; //menyambung successor dengan cursor.right successor.right = cursor.right; * Mencari nilai terbesar yang mendekati nilai yang disimpan Node * yang dihapus, Ilustrasi : * * 65 * 59 72 * 32 64 * 62 * misal : nilai yang dihapus 65, maka nilai terbesar yang mendekati adalah 64. * maka ambil 64 sebagai successor, kemudian gabungkan * 59 * 32 63 * Kemudian satukan keduanya : * 64 * 59 * 32 63 * Jadilah urutan tree yang masih memenuhi syarat Binary Search Tree private Node getsuccessor(node localnode){ Node parent = null, successor = localnode, cursor = localnode.left; while (cursor!= null){ parent = successor; successor = cursor; cursor = cursor.right; if (successor!= localnode.left){ parent.right = successor.left; successor.left = localnode.left; return successor; tutorialpemrograman.wordpress.com - 2009 8

* Method traverse untuk mengelilingi Node-Node dalam tree public void traverse(int tipe){ switch (tipe){ case 1: System.out.print("\nPreorder traversal:\n"); preorder(); break; case 2: System.out.print("\nInorder traversal:\n"); inorder(); break; case 3: System.out.print("\nPostorder traversal:\n"); postorder(); break; System.out.println('\n'); private void preorder(node localroot){ if (localroot == null) return; System.out.print(localRoot.data+" "); preorder(localroot.left); preorder(localroot.right); private void inorder(node localroot){ if (localroot == null) return; inorder(localroot.left); System.out.print(localRoot.data+" "); inorder(localroot.right); private void postorder(node localroot){ if (localroot == null) return; postorder(localroot.left); postorder(localroot.right); System.out.print(localRoot.data+" "); tutorialpemrograman.wordpress.com - 2009 9