Praktikum Algoritma dan Setruktur Data Binary Tree Oleh: Sukarjo (115090613111001) Asisten: Dwi Saputro Ilham Yuliantoro PROGRAM TEKNOLOGI INFORMATIKA DAN ILMU KOMPUTER UNIVERSITAS BRAWIJAYA MALANG - 2012
Pendahuluan Binary Tree ialah Kumpulan node yang saling terhubung satu sama lain dalam suatu kesatuan yangmembentuk layakya struktur sebuah pohon. Struktur pohon adalah suatu caramerepresentasikan suatu struktur hirarki (one-to-many) secara grafis yang miripsebuah pohon, walaupun pohon tersebut hanya tampak sebagai kumpulan node-node dari atas ke bawah. Suatu struktur data yang tidak linier yangmenggambarkan hubungan yang hirarkis (one-to-many) dan tidak linier antaraelemen-elemennya. JENIS-JENIS TREEBINARY TREE Tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal dua subpohon dan kedua subpohon harus terpisah.kelebihan struktur Binary Tree : Mudah dalam penyusunan algoritma sorting Searching data relatif cepat Fleksibel dalam penambahan dan penghapusan data
Sourcode package praktikum8; import java.util.random; class Node{ int data; Node nodekiri; Node nodekanan; public Node left; public Node(int dt){ data = dt; nodekiri = nodekanan = null; public void sisipdt (int dtsisip){ if (dtsisip < data){ if (nodekiri == null) nodekiri = new Node (dtsisip); else nodekiri.sisipdt(dtsisip); else if (dtsisip > data){ if (nodekanan == null) nodekanan = new Node (dtsisip); else nodekanan.sisipdt(dtsisip); public class Tree { private Node root; private int daun=0; public Tree(){ root=null; public void sisipdtnode(int dtsisip){ if (root == null) root = new Node (dtsisip); else root.sisipdt(dtsisip); public void preordertraversal(){
preorder(root); private void preorder(node node){ if (node==null) return; System.out.printf("%d ", node.data); preorder(node.nodekiri); preorder(node.nodekanan); public void inordertraversal(){ inorder(root); private void inorder(node node){ if (node == null) return; inorder(node.nodekiri); System.out.printf("%d ", node.data); inorder(node.nodekanan); public void postordertraversal(){ postorder(root); private void postorder(node node){ if (node==null) return; postorder(node.nodekiri); postorder(node.nodekanan); System.out.printf("%d ", node.data); public int maxdepth() { return(maxdepth(root)); private int maxdepth(node node) { if (node==null) { return(0); else {
int ldepth = maxdepth(node.nodekiri); int rdepth = maxdepth(node.nodekanan); return(math.max(ldepth, rdepth) +1); public int size() { return(size(root)); private int size(node node) { if (node == null) return(0); else { 1 + size(node.nodekanan)); return(size(node.nodekiri) + public void banyakdaun(node node){ if (node==null) return; if ((node.nodekiri==null)&&(node.nodekanan==null)){ daun++; banyakdaun(node.nodekiri); banyakdaun(node.nodekanan); public void daun(){ banyakdaun (root); System.out.println("\nBanyak Daun\n"+daun); public static void main (String args[]){ Tree Tree = new Tree(); int nilai; Random randomnumber = new Random(); System.out.println("Sisip nilai data berikut: "); //sisipdt 10 bilangan acak dari 0-99 ke dalam Tree
for (int i =1; i <= 10; i++){ nilai = randomnumber.nextint(100); System.out.print(nilai + " "); Tree.sisipDtNode(nilai); System.out.println("\n\nPreorder Traversal" ); Tree.preorderTraversal(); System.out.println("\n\nInorder Traversal" ); Tree.inorderTraversal(); System.out.println("\n\nPostorder Traversal" ); Tree.preorderTraversal(); System.out.println("\n\nTinggi Traversal\n" +Tree.maxDepth()); System.out.println("\n\nLevel Traversal\n" +(Tree.maxDepth()-1)); System.out.println("\n\nbanyaknya node Traversal\n" +Tree.size()); Tree.daun(); System.out.println();
Output
Analisa Import java.util.random; ini digunakan untuk fungsi random dalam program. public Node(int dt) ini digunakan untuk bemberi nilai-nilai pada variabeldata, kiri dan kanan. public void sisipdt (int dtsisip) digunakan untuk memasukan nilai pada tree. public class Tree class bernama Tree public Tree() constructor yang digunakan untuk memberi nilai null pada node root. public void sisipdtnode(int dtsisip) digunakan untuk memasukan nilai pada tree. public void preordertraversal() digunakan untuk memanggil method preorder() dengan input parameter node(root). private void preorder(node node) method rekursif yang digunakan untuk mencari nilai preorder. public void inordertraversal() digunakan untuk memanggil method inorder() dengan input parameter node(root). private void inorder(node node) method rekursif yang digunakan untuk mencari nilai inorder. public void postordertraversal()digunakan untuk memanggil method postorder() dengan input parameter node(root). private void postorder(node node) method rekursif yang digunakan untuk mencari nilai postorder. public int maxdepth() ialah method untuk mencari dari tinggi Tree. public void banyakdaun(node node) method ini untuk mencari dari nilai dari banyaknya daun pada Tree. public int size() method ini berfungsi untuk mencari banyaknya node pada Tree.
Kesimpulan Dari pembahasan laporan di atas maka dapat disimpulkan bahwa : 1. T r e e m e r u p a k a n s a l a h s a t u b e n t u k s t r u k t u r d a t a t i d a k l i n e a r y a n g m e n g g a m b a r k a n hubungan yang bersifat hierarkis (hubungan one to many) antara elemen-elemen. Tree merupakan salah satu struktur data yang paling penting, karena banyak aplikasimenggunakan informasi dan data yang secara alami memiliki struktur hi rarkis berguna dalam membantu memecahkan banyak masalah algoritmis. 2. U n t u k m e m b a n g u n l o g i k a b e r p i k i r d a n m e n g i m p l e m e n t a s i k a n s e t i a p p e r m a s a l a h a n m e n g e n a i a l g o r i t m a t r e e d a p a t d i s e l e s a i k a n s e c a r a l o g i s d a l a m b e n t u k b a h a s a pemrograman Java. Twitter facebook E-Mail @arjosarilah Sukarjo Sarilah Putra sukarjosarilah@gmail.com