Advertisement
Yesver08

BinarySearchTree.java

Nov 5th, 2021
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.17 KB | None | 0 0
  1. package praktikum7;
  2.  
  3. public class BinaryTree_Example {
  4.     public static void main(String[] args) {
  5.         BinarySearchTree tree = new BinarySearchTree(10);
  6.         tree.add(5);
  7.         tree.add(12);
  8.         tree.add(20);
  9.         tree.preorder(tree.root);
  10.         System.out.println();
  11.         tree.postorder(tree.root);
  12.     }
  13. }
  14.  
  15. class BinarySearchTree {
  16.     public Node root;
  17.  
  18.     public BinarySearchTree(int data) {
  19.         root = new Node(data);
  20.     }
  21.  
  22.     public void add(int data) {
  23.         root = add(root, data);
  24.     }
  25.  
  26.     public Node add(Node current, int data) {
  27.         if (current == null) {
  28.             current = new Node(data);
  29.         }
  30.         else {
  31.             if (data < current.data) {
  32.                 current.left = add(current.left, data);
  33.             }
  34.             if (data > current.data) {
  35.                 current.right = add(current.right, data);
  36.             }
  37.         }
  38.         return current;
  39.     }
  40.  
  41.     public void remove(int data) {
  42.         root = remove(root, data);
  43.     }
  44.  
  45.     public Node remove(Node current, int data) {
  46.         if (current != null) {
  47.             if (current.data == data) {
  48.                 if (current.left != null) current = current.left;
  49.                 else current = current.right;
  50.             }
  51.             else if (data < current.data)
  52.                 current.left = remove(current.left, data);
  53.             else if (data > current.data)
  54.                 current.right = remove(current.right, data);
  55.         }
  56.         return current;
  57.     }
  58.  
  59.     public void preorder(Node current) {
  60.         // Cetak root, cek kiri, cek kanan
  61.         System.out.print(current.data + " ");
  62.         if (current.left != null) preorder(current.left);
  63.         if (current.right != null) preorder(current.right);
  64.     }
  65.  
  66.     public void postorder(Node current) {
  67.         // Cek kiri, cek kanan, cetak root
  68.         if (current.left != null) postorder(current.left);
  69.         if (current.right != null) postorder(current.right);
  70.         System.out.print(current.data + " ");
  71.     }
  72. }
  73.  
  74. class Node {
  75.     public int data;
  76.     public Node left, right;
  77.  
  78.     public Node(int data) {
  79.         this.data = data;
  80.     }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement