Implementasi Binary Tree

Slides:



Advertisements
Presentasi serupa
STRUKTUR DATA (10) tree manipulation
Advertisements

 public static void main(String[] args) {  int bil1=3;  do {  System.out.print(bil1+",");  bil1=bil1+4;  }  while(bil1
Variabel di Java Variabel merupakan sebuah tempat untuk menyimpan data. Di Java setiap pembuatan variabel harus ditentukan tipe.
Double Linked List.
Binary Trees adalah parent
Array.
LINKED LIST.
Flow Control & Exception Handling
Oleh : Sukma Murdani, S.Kom. SILABUS PENDAHULUAN Pengenalan OOP Pengenalan JAVA OOP (Object Oriented Programming) JAVA Class, Java Interface Encapsulation.
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Java array.
Queue.
SLIDE OTOMATIS PINDAH DALAM WAKTU 4-5 MENIT. A:kiriB:kanan Deklarasikan sebuah variabel dengan nama ‘isi’ yang mempunyai type array of double dengan ukuran.
PEMROGRAMAN BERORIENTASI OBJEK
Tree.
Nandang Hermanto PK2 Pertemuan 3. Perulangan Pernyataan while Pernyataan do..while Pernyataan for.
Queue.
Queue.
Operasi pada pohon biner
Queue.
Algoritma dan Struktur Data
- PERTEMUAN 4 - PERULANGAN
Flow Control & Looping Pertemuan 4 Pemrograman Berbasis Obyek Oleh Tita Karlita.
PELATIHAN JAVA FUNDAMENTAL
Struktur Data List Linear : Linked List (Double Linkedlist)
ADT Tree 2007/2008 – Ganjil – Minggu 8.
Object Oriented Programming with JAVA 2011/2012
Linear Data Structures (Queue)
Linear Data Structures (Stack)
Binary Search Tree 2007/2008 – Ganjil – Minggu 9.
Tenia Wahyuningrum, S.Kom. MT
Struktur Data List Linear : Linked List (Single Linkedlist)
Public class RelasiDemo { public static void main(String[] args) { //beberapa nilai int i = 37; int j = 42; int k = 42; System.out.println("Nilai variabel...");
Pemrograman Berorientasi Obyek Lanjut (IT251)
STRUKTUR DATA tree manipulation
BINARY TREE Universitas Ahmad Dahlan
1 Pertemuan Tree Matakuliah: T0026/Struktur Data Tahun: 2005 Versi: 1/1.
Pertemuan 13 Graph + Tree jual [Valdo] Lunatik Chubby Stylus.
Tree. Tree (Pohon) Dalam dunia nyata, sebuah pohon memiliki : akar, cabang, daun. Dalam dunia komputer, pohon (tree) memiliki 3 (tiga) bagian tersebut.
Struktur kontrol.
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
Apakah Stack itu ?. Apakah Stack itu ? Pengertian STACK Secara sederhana diartikan dengan : sebagai tumpukan dari benda sekumpulan data yang seolah-olah.
Algoritma & Pemrograman 1
03 Elemen Dasar Bahasa Java
STACK.
Binary Search Tree. Sebuah node di Binary Search Tree memiliki path yang unik dari root menurut aturan ordering – Sebuah Node, mempunyai subtree kiri.
Binary Tree.
Menggambar Tree wijanarto.
TREE STRUCTURE (Struktur Pohon)
Struktur Data Binary Search Tree (BST)
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
Linear Data Structures (Stack)
STRUKTUR DATA – Pertemuan 6
Struktur Organisasi Data 2
Manipulasi Tree.
Struktur Data Khoiriya Latifa, M.Kom.
STRUKTUR DATA 2014 M. Bayu Wibisono.
Manipulasi Tree.
Teknik Informatika - Universitas Muhammadiyah Malang (UMM)
STACK / TUMPUKAN Struktur Data.
Algoritma dan Struktur Data
Algoritma dan Struktur Data
QUEUE (ANTRIAN) Queue atau antrian didefinisikan sebagai kumpulan dari obyek-obyek yang homogen dengan operasi penambahan elemen (Enqueue) dan pengambilan.
Oleh Shoffin Nahwa Utama, S.Kom
IT234 Algoritma dan Struktur Data
IT234 Algoritma dan Struktur Data
Pohon Biner.
IT234 Algoritma dan Struktur Data
TREE Oleh : Neny silvia Nurhidayah Afny wilujeng Setyorini
Transcript presentasi:

Implementasi Binary Tree

Operasi pada Binary Tree Operas-operasi yang ada pada binary tree adalah : Deklarasi Pengecekkan kosong (isEmpty) Penambahan node Traversal (penelusuran node)

Deklarasi dengan Array Dengan menggunakan array, prosesnya meliputi : Deklarasi class ArrayBinaryTree Deklarasi variabel array Instansiasi variabel array variabel array digunakan untuk menyimpan node-node yang membentuk binary tree. Yaitu berupa variabel array 1 dimensi. Tipe variabel array akan menentukan jenis data yang dapat disimpan pada binary tree. 4. Deklarasi variabel size (untuk menyimpan jumlah node) 5. Deklarasi variabel last (untuk menyimpan index node terakhir)

Contoh program Deklarasi : *contoh : instansiasi variabel array dengan panjang 15 element. public class ArrayBinaryTree //deklarasi class { static Object [] a; //deklarasi array static int last; //deklarasi last static int size=0; //deklarasi size public static void main(String [] args) a = new Integer [15]; //instansiasi* .....

isEmpty dengan Array Digunakan untuk mengecek binary tree dalam kondisi kosong atau terisi node. Pengecekan menggunakan variabel size. Mengembalikan true jika size =0. Mengembalikan false jika nilai size > 0.

Contoh program isEmpty : static boolean isEmpty() { return (size==0); }

Penambahan Node dengan Array Penambahan node dengan menggunakan index. Ketika terjadi penambahan node terjadi increment nilai pada variabel size. Dan variabel last akan menunjuk index node yang terakhir kali ditambahkan.

Contoh program Penambahan node : static void addNode(int i, int isi) { a[i] = new Integer(isi); size++; last = i; }

Traversal dengan Array Penelusuran (traversal) digunakan untuk menelusuri node pada binary tree satu per-satu. Terdiri dari 3 metode traversal : Pre-order In-order Post-order

Contoh program Penelusuran node (inorder): public static void inOrder(Object [] theArray, int theLast) { a = theArray; if(!isEmpty()) theInOrder(1); } else System.out.println("Binary Tree Kosong");

Contoh program Program rekursif untuk penelusuran subtree : static void theInOrder(int i) { if (i <= last && a[i]!=null) theInOrder(2 * i); visit(i); theInOrder(2 * i + 1); }

Kunjungan Node Digunakan untuk mengunjungi node. Proses yang dilakukan adalah mencetak node untuk menandai bahwa node tersebut sudah dikunjungi.

Contoh program Kunjungan/visit node : public static void visit(int i) { System.out.print(a[i] + " "); }

Deklarasi dengan Linked list Dengan menggunakan linked list, prosesnya meliputi : Pembuatan class node (double linked list) Pembuatan class LinkedBinaryTree Deklarasi variabel root bertipe Node Deklarasi variabel size

Contoh program Deklarasi : public class LinkedBTree{ static Node2P root; static int size=0; ..... }

isEmpty Digunakan untuk mengecek binary tree dalam kondisi kosong atau tidak. Pengecekan dilakukan pada variabel root. Jika root menunjuk null, kondisi kosong dan mengembalikan nilai true. Sebaliknya, jika root tidak menunjuk null berarti kondisi binary tree tidak kosong dan mengembalikan nilai false.

Contoh program Pengecekan kosong: static boolean isEmpty() { return (root==null); }

Penambahan Node Untuk melakukan penambahan node, terlebih dahulu harus di-create node baru. Node x = new Node(data); Ketika ada penambahan node terjadi increment nilai pada variabel size.

Contoh program Penambahan node : static void addNode(Node2P baru, Node2P kiri, Node2P kanan) { baru.next = kanan; baru.previous = kiri; size++; }

setRoot Digunakan untuk menandai node mana yang dijadikan sebagai root. static void setRoot(Node2P r) { root = r; }

Traversal dengan linkedlist Penelusuran (traversal) digunakan untuk menelusuri node pada binary tree satu per-satu. Terdiri dari 3 metode traversal : Pre-order In-order Post-order

Contoh program Penelusuran node (postOrder) : static void postOrder() { if(!isEmpty()) thePostOrder(root); else System.out.println("Binary Tree Kosong"); }

Contoh program Program rekursif untuk penelusuran subtree : static void thePostOrder(Node2P node) { if(node != null) thePostOrder(node.previous); thePostOrder(node.next); System.out.print(node.data + " "); }

Contoh program Penelusuran node (level order) : static void theLevelOrder(Node2P node) { QueueArray temp = new QueueArray(); temp.inisialisasi(15); temp.enqueue(node); while(temp.jumlah_item >0) if(node.previous !=null) temp.enqueue(node.previous); if(node.next !=null) temp.enqueue(node.next); System.out.print(node.data + " "); if(!temp.isEmpty()) temp.dequeue(); node = temp.peekQueue(); }

Implementasi Binary Search Tree

Operasi Binary Search Tree Operasi-operasi yang dilakukan pada binary search tree meliputi : Penambahan node Penghapusan node Pencarian node

Penambahan BST Penambahan node pada BST harus mengikuti aturan minMax, dimana node yang bernilai lebih kecil dari root diletakkan pada subtree sebelah kiri sedangkan node yang bernilai lebih besar diletakkan pada subtree sebelah kanan. Jika ada nilai yang sama maka node tersebut di-overwrite.

Contoh program Penambahan : Node2P insert(int x, Node2P t) { if (t == null) { t = new Node2P (x, null, null); } else if (x < t.data) { t.previous = insert (x, t.previous); } else if (x > t.data) { t.next = insert (x, t.next); } else { t=t; } return t;

Penghapusan BST Ada 3 kasus : Elemen ada di leaf/daun. Elemen yang memiliki degree 1. Elemen yang memiliki degree 2.

Penghapusan Node Daun (Node 7) 20 10 6 2 8 15 40 30 25 35 7 18 Remove a leaf element. key = 7

Penhapusan Node Daun (Node 35) 20 10 6 2 8 15 40 30 25 35 7 18 Remove a leaf element. key = 35

Penghapusan Node Ber-degree 1 20 10 6 2 8 15 40 30 25 35 7 18 Remove from a degree 1 node. key = 40

Penghapusan Node Ber-degree 1 20 10 6 2 8 15 40 30 25 35 7 18 Remove from a degree 1 node. key = 15

Penghapusan Node Ber-degree 2 20 10 6 2 8 15 40 30 25 35 7 18 Remove from a degree 2 node. key = 10

Remove From A Degree 2 Node 20 10 40 6 15 30 18 25 35 2 8 7 Replace with largest key in left subtree (or smallest in right subtree).

Penghapusan Node Ber-degree 2 20 10 40 6 15 30 18 25 35 2 8 7 Replace with largest key in left subtree (or smallest in right subtree).

Penghapusan Node Ber-degree 2 20 8 40 6 15 30 18 25 35 2 8 7 Replace with largest key in left subtree (or smallest in right subtree).

Latihan Remove from a degree 2 node. key = 20 20 10 6 2 8 15 40 30 25 35 7 18 Remove from a degree 2 node. key = 20

Penghapusan Node Ber-degree 2 20 10 40 6 15 30 18 25 35 2 8 7 Replace with largest in left subtree.

Penghapusan Node Ber-degree 2 20 10 40 6 15 30 18 25 35 2 8 7 Replace with largest in left subtree.

Penghapusan Node Ber-degree 2 18 10 40 6 15 30 18 25 35 2 8 7 Replace with largest in left subtree.

Hasil Akhir 18 10 40 6 15 30 25 35 2 8 7

Contoh program Penghapusan: Node2P remove(int x, Node2P t) { if (t == null) t=null; if (x < t.data) { t.previous = remove(x, t.previous); } else if (x > t.data) { t.next = remove(x, t.next); } else if (t.previous != null && t.next != null) { t.data = findMin(t.next).data; t.next = removeMin(t.next); } else { t = (t.previous != null) ? t.previous : t.next; } return t;

Contoh program Penghapusan node terkecil : Node2P removeMin(Node2P t) { if (t == null) t=null; if (t.previous != null) { t.previous = removeMin (t.previous); } else { t = t.next; } return t;

Contoh program Pencarian Node terkecil : Node2P findMin (Node2P t) { if (t == null) t=null; while (t.previous != null) { t = t.previous; } return t;

Pustaka Sartaj Sahni , “Data Structures & Algorithms”, Presentation L20-24. Mitchell Waite, “Data Structures & Algorithms in Java”, SAMS, 2001