Praktikum Algoritma dan Setruktur Data

dokumen-dokumen yang mirip
Praktikum Algoritma dan Setruktur Data

Politeknik Elektronika Negeri Surabaya

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

LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA FAKULTAS ILMU KOMPUTER UNIVERSITAS BRAWIJAYA

Struktur Data Tree/Pohon dalam Bahasa Java

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

LAPORAN PRAKTIKUM PEMROGRAMAN DASAR TIPE-TIPE FUNGSI ATAU METHOD

Binary Tree kosong Gambar 1. Binary Tree dalam kondisi kosong

LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PENGENALAN OBJECT ORIENTED PROGRAMMING

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

Politeknik Elektronika Negeri Surabaya

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

Soal Pendahuluan Modul 3

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

Perulangan / Looping

Percabangan & Perulangan

PRAKTIKUM PEMROGRAMAN LANJUT MODUL 1

int i = 0; while (i < 10) { System.out.println( Informatika Unpas ); i++; }

Struktur Data dan Algoritma

Struktur Data & Algoritma

Percabangan dan Perulangan

Topik. 1. Statement if 2. Statement if..else.. 3. Statement if..else.. If (bertingkat ) 4. Penggunaan Input Keyboard

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

LAPORAN PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK

MODUL III ARRAYLIST TUGAS PENDAHULUAN

Modul Praktikum 3 Pemograman Berorientasi Objek

Gambar 1. Single Linked List

LAPORAN RESMI PRAKTIKUM BAHASA PEMROGRAMAN

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

Politeknik Elektronika Negeri Surabaya

TIPE DATA Pertemuan (K-03/L-03)

Dasar Pemrograman Java

Metode Binnary Searching di Java Console

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

MODUL PRAKTIKUM STRUKTUR DATA

Membuat dan Menggunakan Class

Belajar ArrayList di Java

IF PEMROGRAMAN LANJUT PERULANGAN. Oleh : Andri Heryandi, M.T.

Pemrograman Berorientasi Objek (PBO) PERTEMUAN X (LOOPING)

ADT Graph. Disusun untuk Memenuhi Laporan Praktikum Algoritma dan Struktur Data. Oleh: NIM : Asisten:

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

MODUL 5 PERULANGAN A. WHILE

Array. Adharul Muttaqin Universitas Brawijaya Malang. Array

Chapter 12.1: package chapter.pkg12; /** * Advan */ import java.util.random; import static java.lang.system.out; public class Chapter12 {

Array Sebagai Parameter Method

DASAR PEMROGRAMAN JAVA. Astrid Lestari Tungadi, S.Kom., M.TI.

Latihan Ujian Pemrograman Berorientasi Objek. Semester Genap 2016/2017

BAB XI Manipulasi Binary Tree

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

KENDALI PROSES. Untuk mengatur arus program, pemrograman java menyediakan struktur perulangan (looping), kondisional, percabangan, dan lompatan.

SEKUEN, PERCABANGAN & PENGULANGAN

Penggunaan Algoritma Backtrack dan Aturan Warnsdorff Untuk Menyelesaikan Knight s Tour Problem

A. Judul Percobaan/praktikum Tipe Data, Keyword, Variabel, Operator dan Teknik Konfersi

Gambar 1. Single Linked List

Pemanfaatan Algoritma BFS pada Graf Tak Berbobot untuk Mencari Jalur Terpendek

Aplikasi Algoritma Brute Force Pada Knight s Tour Problem

BAHASA PEMROGRAMAN JAVA

Tes Asisten Praktikum Alpro Lanjut

PRAKTEK 1 CLASS, ATTRIBUTE, METHOD, DAN OBJEK

Modul 4: Iteratif & Rekursif, Binary Tree

KUM 6 IMPLEMENTASI BINARY TREE

Gambar 1. Single Linked List

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

1. Mana diantara pilihan-pilihan berikut ini yang merupakan penulisan loop yang benar?

Mata Kuliah : Pemrograman Berbasis Objek Pertemuan : 4

I. Tujuan Instruksional Umum Mengenal konsep dasar berorientasi objek Memahami dan dapat mengimplementasikan Kelas dan Objek pada java.

Operator, Statement kondisional, dan Iterasi pada Java

PEMROGRAMAN BERORIENTASI OBJEK

Modul 3 Flow Control dan Input

Pertemuan 2 Struktur Kontrol Percabangan

Projek Kelompok 7. package (tiopan-programmer java) public class aritmatika1{ public static void main(string[]tiw){ int calculation = 1;

SUMBER BELAJAR PENUNJANG PLPG

Terdiri atas deretan karakter String diimplementasikan oleh java dalam bentuk class. Dapat langsung di konstruksi tanpa perintah new

Gambar 1. Ilustrasi Stack

BAB 1 KONSEP DASAR JAVA

Kelompok 7. package (tiopan-programmer java) public class aritmatika1{ public static void main(string[]tiw){ int calculation = 1;

Algoritma dan Struktur Data. Queue

OBJECT, CLASS DAN METHOD. 1. Mengetahui pengertian dari objek & class 2. Dapat membuat program sederhana dari java dengan menggunakna objek dan class

LAPORAN PRAKTIKUM PEMROGRAMAN DASAR PROGRAM PENYEDERHANAAN PECAHAN

PERCOBAAN 1 : Ketik program di bawah ini, bila terjadi kasalahan waktu compile dan runtime, betulkan!

Arrays. Misalkan kita ingin menyimpan 100 buah integer Buat 100 variabel bertipe integer. Tidak efisien!

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

Struktur Kontrol Pemrograman Java : PERCABANGAN

Tiopan Indra Wahyudi R5L PROJECT KELOMPOK 7 R5L. package brekk; public class brekk{ public static void main(string[]args){

PEMROGRAMAN JAVA. Operator. Yoannita

if (ekspresi_boolean) { Pernyataan1; } else { Pernyataan2; }

Tipe Data Floating Point Tipe data yng digunakan untuk menampung bilangan desimal

Bubble Sort dan Selection Sort di Java Console

MODUL 3 PEWARISAN TUJUAN DASAR TEORI

Praktikum JTable. Gambar 1

ShortHand If Else di Java

PEMROGRAMAN JAVA. Operator. Yoannita. Special thanks : Some slides are from Josephine Petrina K & Gasim Alkaff

LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN ( Implementasi Rekursi Pada Java)

ALGORITMA DAN STRUKTUR DATA

OPERATOR-OPERATOR DALAM JAVA

ANALISIS ALGORITMA BINARY SEARCH

2.1 if Jenis-jenis Percabangan if adalah if, if else, If else if else if - else

Bahasa Pemrograman :: Dasar Pemrograman Java

Percabangan & Perulangan

Modul Praktikum 2 Pemograman Berorientasi Objek

Transkripsi:

Praktikum Algoritma dan Setruktur Data AVL Tree Oleh: Sukarjo (115090613111001) Asisten: Dwi Saputro Ilham Yuliantoro PROGRAM TEKNOLOGI INFORMATIKA DAN ILMU KOMPUTER UNIVERSITAS BRAWIJAYA MALANG - 2012

Pendahuluan AVL Tree. Dalam sebuah AVL Tree, yang ketinggian dari dua anak sub pohon dari simpul apapun berbeda dengan paling banyak satu, jika sewaktuwaktu mereka berbeda lebih dari satu maka rebalancing dilakukan untuk mengembalikan properti ini dengan cara memutar dari setruktur bilangan Tree tersebut atau dengan Lookup, penyisipan, dan penghapusan.

Sourcode package praktikum9; import java.util.*; class Node { Object data; int tinggi; Node pkiri; Node pkanan; Node pinduk; public Node(Object dt, int tg,node pki, Node pka, Node pi){ this.data=dt; this.tinggi=tg; this.pkiri=pki; this.pkanan=pka; this.pinduk=pi; public class AVLT { private Node root; public AVLT(){root=null; public boolean caridt(object dt){ Node temp = root; while(temp!=null){ if(dt==temp.data)return true; else if(dt.hashcode()<temp.data.hashcode())temp =temp.pkiri; else temp=temp.pkanan; return false; public int tinggi(){return root.tinggi; private int tinggi(node node){ if(node==null)return 0; else return node.tinggi; public boolean sisipdt(object dt){ if(root==null){

root= new Node(dt,1,null,null,null); return true; else{ Node temp=root; Node prev= null; while(temp!=null){ if(dt.equals(temp.data))return false; else if (dt.hashcode()<temp.data.hashcode()){ prev=temp; temp=temp.pkiri; else{ prev=temp; temp=temp.pkanan; temp = new Node(dt,1,null,null,prev); if (dt.hashcode()<prev.data.hashcode())prev.pkiri=temp; else prev.pkanan=temp; while(temp!= null){ if (Math.abs(tinggi(temp.pKiri)- tinggi(temp.pkanan))<=1){ temp.tinggi=math.max(tinggi(temp.pkiri),tinggi(temp.pkanan)+1); else if(tinggi(temp.pkiri)- tinggi(temp.pkanan)>=2&&(tinggi(temp.pkiri))>=tinggi(temp.pkanan)){ Node parent= temp.pinduk; Node pkiri=temp.pkiri; temp.pkiri=temp.pkanan; if(temp.pkiri!=null)temp.pkiri.pinduk=temp; pkiri.pkanan=temp; temp.pinduk=pkiri; pkiri.pinduk=parent; if(parent==null)root=pkiri; else if (parent.pkiri==temp)parent.pkiri=pkiri; else parent.pkanan=pkiri;

temp.tinggi=math.max(tinggi(temp.pkiri),tinggi(temp.pkanan))+1; else if(tinggi(temp.pkanan)- tinggi(temp.pkiri)>=2&&tinggi(temp.pkanan)>=tinggi(temp.pkiri)){ Node parent= temp.pinduk; Node pkanan=temp.pkanan; temp.pkanan=pkanan.pkiri; if(temp.pkanan!=null)temp.pkanan.pinduk=temp; pkanan.pkiri=temp; temp.pkanan=temp.pkanan; pkanan.pkiri=temp; temp.pinduk=pkanan; pkanan.pinduk=parent; if(parent==null)root=pkanan; else if(parent.pkanan==temp)parent.pkanan=pkanan; else parent.pkiri=pkanan; //menghitung tinggi subtree pkanan temp.tinggi =Math.max(tinggi(temp.pKiri),tinggi(temp.pKanan)+1); temp= pkanan; //menghitung tinggi dari root temp.tinggi=math.max(tinggi(temp.pkiri),tinggi(temp.pkanan)+1); tinggi(temp.pkanan)>=2&& else if(tinggi(temp.pkiri)- tinggi(temp.pkiri.pkanan)>=tinggi(temp.pkiri.pkiri)){ Node parent = temp.pinduk; Node pkiripkanan = temp.pkiri.pkanan;

temp.pkiri.pkanan=temp.pkiri; if(temp.pkiri.pkanan!=null) pkiripkanan.pkanan=temp; temp.pinduk=pkiripkanan; pkiripkanan.pinduk=parent; if(parent==null)root=pkiripkanan; else if(parent.pkiri==temp) parent.pkiri=pkiripkanan; else parent.pkanan=pkiripkanan; //hitung tinggi subtree kanan temp.tinggi=math.max(tinggi(temp.pkiri),tinggi(temp.pkanan)+1); temp =pkiripkanan; //hitung tinggi dari root temp.tinggi=math.max(tinggi(temp.pkiri),tinggi(temp.pkanan)+1); tinggi(temp.pkiri)>=2&& else if(tinggi(temp.pkanan)- tinggi(temp.pkanan.pkiri)>=tinggi(temp.pkanan.pkanan)){ Node parent = temp.pinduk; Node pkananpkiri = temp.pkanan.pkiri; temp.pkanan.pkiri=pkananpkiri.pkanan; if(temp.pkanan.pkiri!=null) temp.pkanan.pkiri.pinduk=temp.pkanan; pkananpkiri.pkanan=temp.pkanan; temp.pkanan.pinduk=pkananpkiri; temp.pkanan.pinduk=temp; temp.pkanan=pkananpkiri.pkiri; if(temp.pkanan!=null)

pkananpkiri.pkiri=temp; temp.pinduk=pkananpkiri; pkananpkiri.pinduk=parent; if(parent==null)root=pkananpkiri; else if(parent.pkanan==temp) parent.pkanan=pkananpkiri; else parent.pkiri=pkananpkiri; temp.tinggi=math.max(tinggi(temp.pkiri),tinggi(temp.pkanan)+1); temp=pkananpkiri; temp.tinggi=math.max(tinggi(temp.pkiri),tinggi(temp.pkanan)+1); temp=temp.pinduk; //penyisipan berhasil return true; //menghitung node-node dari tree public int jumlahnode(){ return jumlahnode(root); private int jumlahnode(node node){ if(node==null)return 0; else return 1+jumlahNode(node.pKiri)+jumlahNode(node.pKanan); public void inordertranversal(){ inorder(root); private void inorder(node node){ if(node==null)return; inorder(node.pkiri); System.out.printf("-"+node.data); inorder(node.pkanan); public String User(String nama) { Scanner input=new Scanner(System.in);

System.out.print("ID\t: "); int id=input.nextint(); System.out.print("Alamat\t: "); String alamat=input.next(); String data=id+"\t\t"+nama+"\t\t"+alamat+"\n"; return data; public static void main(string[] args){ Scanner input =new Scanner(System.in); AVLT tree = new AVLT(); System.out.println("SUSUNAN TREE"); System.out.println("============"); tree.sisipdt(3);tree.inordertranversal();system.out.println(); tree.sisipdt(4);tree.inordertranversal();system.out.println(); tree.sisipdt(6);tree.inordertranversal();system.out.println(); tree.sisipdt(5);tree.inordertranversal();system.out.println(); tree.sisipdt(15);tree.inordertranversal();system.out.println(); tree.sisipdt(10);tree.inordertranversal();system.out.println(); tree.sisipdt(20);tree.inordertranversal();system.out.println(); tree.sisipdt(17);tree.inordertranversal();system.out.println(); tree.sisipdt(25);tree.inordertranversal();system.out.println(); AVLT av = new AVLT(); boolean selesai=false;string sel=""; System.out.println("\nSELAMAT DATANG!"); System.out.println("================"); System.out.println("\nsilahkan isi data diri anda\n"); System.out.println(" \n"); while(selesai!=true) { System.out.print("\nNama\t: "); String nama=input.nextline(); av.sisipdt((new String(av.User(nama))));System.out.println("\nNasabah terdaftar saat ini\n");

av.inordertranversal();system.out.println(); System.out.print("Apakah Anda Ingin Melanjutkan?\n"); System.out.println(" \n"); System.out.println("(y) untuk MELANJUTKAN"); System.out.println("(t) untuk TIDAK"); sel=input.nextline(); if(sel.equalsignorecase("t"))selesai= true;

Output

Analisa public Node(Object dt, int tg,node pki, Node pka, Node pi) ini digunakan untuk menginisialisasikan dari method dt, tinggi node, node kiri, kanan dan induk. public class AVLT {ini ialah class dengan nama AVT private Node root; ini ialah method root dari Tree public AVLT(){root=null; ini ialah untuk mengambil nilai dari root private int tinggi(node node) ini ialah methot untuk mengambil nilai tinggi dari root public boolean sisipdt(object dt) ini ialah method untuk memasukan nilai dari tree public int jumlahnode() ini ialah untuk mencari jumlah dari tree. public void inordertranversal() ini ialah untuk mencari nilai Tree yang telah di inorder. public String User(String nama) ini method untukmenampung data id, dan alamat dari user. public static void main(string[] args) ini ialah methot utama atau main method dari program.

Kesimpulan Dari pembahasan laporan di atas maka dapat disimpulkan bahwa : Binary Search Tree AVL ialah algoritma yang akan membandingkan sebuah nilai dan kaki(root) dari Tree tersebut. AVL ini tidak boleh memiliki panjang lebih dari 2. Jika hal ini terjadi maka pembandingan (balance) akan di lakukan dengan system pemutaran sehingga ditemukan nilai < 2. Daftar Pustaka en.wikipedia.org/wiki/avl_tree Modul praktikum Algoritma dan Setruktur Data 1