Struktur Binary Tree adalah sebuah prohon struktur data dimana setiap simpul memiliki paling banyak dua anak. Secara khusus anak (child) nya dinamakan kiri dan kanan. Anak (child) kiri selalu bernilai lebih kecil daripada nilai induk (parent) nya, sedangkan anak (child) kanan selalu bernilai lebih besar daripada induk (parent) nya.
Berikut ilustrasi dari Struktur Binary Tree :
Berikut adalah coding dari program binary tree :
Ya itulah coding, script dari contoh program binary tree pada java
Berikut ilustrasi dari Struktur Binary Tree :
Berikut adalah coding dari program binary tree :
package binary_tree; class Node{ Node left, right, parent; int data; } public class Binary_Tree { // FUNCTIONS & GLOBAL VARIABLES static Node root; static void insert(int data){ // buat node baru Node new_node = new Node(); new_node.data = data; if(root == null){ // tree kosong root = new_node; }else{ Node position = root; boolean found = false; while(!found){ if(new_node.data < position.data){ if(position.left == null){ found = true; new_node.parent = position; position.left = new_node; }else{ position = position.left; } }else{ if(position.right == null){ found = true; new_node.parent = position; position.right = new_node; }else{ position = position.right; } } } } } static void view(){ node_view(root, ""); } static void node_view(Node node, String spaces){ if(node == null){ System.out.println(spaces + "EMPTY"); }else{ System.out.println(spaces + node.data); node_view(node.left, spaces+" "); node_view(node.right, spaces + " "); } } static void postfix (Node localroot){ if(localroot != null){ System.out.print("("); postfix(localroot.left); postfix(localroot.right); System.out.print(" "+localroot.data+" "); System.out.print(")"); } } static void delete(int deleted){ boolean found = false; Node x = root; while(x != null){ if(x.data == deleted){ found = true; break; }else if(x.left != null && deleted < x.data){ x = x.left; }else if(x.right != null && deleted > x.data){ x = x.right; }else{ found = false; break; } } if(!found){ // do nothing, node not found }else{ boolean is_root = x.parent == null; boolean is_right = !is_root && x == x.parent.right; boolean is_left = !is_root && x == x.parent.left; // jika tidak punya anak if(x.left == null && x.right == null){ if(is_root){ // tdk punya anak & adalah root root = null; }else{ // tdk punya anak & bukan root if(is_left){ // tdk punya anak & adalah anak kiri x.parent.left = null; }else if(is_right){ // tdk punya anak & adalah anak kanan x.parent.right = null; } x.parent = null; // putuskan hubungan dengan parent } }else if(x.left != null && x.right == null){ // hanya punya anak kiri if(is_root){ root = x.left; root.parent.left = null; root.parent = null; }else{ if(is_left){ x.parent.left = x.left; }else if(is_right){ x.parent.right = x.left; } x.left.parent = x.parent; x.parent = null; x.left = null; } }else if(x.left == null && x.right != null){ // hanya punya anak kanan if(is_root){ // root root = x.right; root.parent.right = null; root.parent = null; }else{ // bukan root if(is_left){ x.parent.left = x.right; }else if(is_right){ x.parent.right = x.right; } x.right.parent = x.parent; x.parent = null; x.right = null; } }else{ // punya 2 anak Node replacement = x.right; // kanan sekali while(replacement.left != null){ // kiri sekiri-kirinya replacement = replacement.left; } if(replacement.right != null){ // kalau replacement punya anak kanan replacement.parent.left = replacement.right; replacement.right.parent = replacement.parent; }else{ // kalau replacement tidak punya anak replacement.parent.left = null; } // replace x if(is_root){ replacement.parent = null; root = replacement; }else if(is_left){ replacement.parent = x.parent; x.parent.left = replacement; }else if(is_right){ replacement.parent = x.parent; x.parent.right = replacement; } replacement.left = x.left; replacement.right = x.right; if(replacement.left != null){ replacement.left.parent = replacement; } if(replacement.right != null){ replacement.right.parent = replacement; } // hapus x dari tree x.parent = null; x.left = null; x.right = null; } } } public static void main(String[] args) { insert(5); insert(7); insert(6); insert(8); insert(2); insert(4); insert(1); view(); delete(5); view(); postfix(root); } }
0 komentar untuk Contoh Coding Program Binary Tree pada Java.
Perlihatkan Semua Komentar Tutup Semua Komentar