Advertisement
Josif_tepe

Untitled

Jun 19th, 2023
845
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.96 KB | None | 0 0
  1. import java.lang.reflect.Array;
  2. import java.util.Arrays;
  3.  
  4. public class Main {
  5.     public static void main(String[] args) {
  6.         int[] array = {1, 2, 3, 4,5, 6, 7};
  7.         Arrays.sort(array);
  8.     BST tree = BST.createBSTFromArray(array);
  9.     tree.inorder();
  10.     }
  11.  
  12. }
  13.  
  14. class BST {
  15.     static class Node {
  16.         int info;
  17.         Node left, right;
  18.  
  19.         Node(int info) {
  20.             this.info = info;
  21.             left = null;
  22.             right = null;
  23.         }
  24.     }
  25.     Node root;
  26.     BST() {
  27.         root = null;
  28.     }
  29.     void insert(int value) {
  30.         root = insertRecursive(root, value);
  31.     }
  32.     Node insertRecursive(Node node, int value) {
  33.         if(node == null) {
  34.             node = new Node(value);
  35.             return node;
  36.         }
  37.         if(value < node.info) {
  38.             node.left = insertRecursive(node.left, value);
  39.         }
  40.         else if(value > node.info) {
  41.             node.right = insertRecursive(node.right, value);
  42.         }
  43.         return node;
  44.     }
  45.     void delete(int value) {
  46.         root = deleteRecursive(root, value);
  47.     }
  48.     Node deleteRecursive(Node node, int value) {
  49.         if(node == null) {
  50.             return null;
  51.         }
  52.  
  53.         if(value < node.info) {
  54.             node.left = deleteRecursive(node.left, value);
  55.         }
  56.         else if(value > node.info) {
  57.             node.right = deleteRecursive(node.right, value);
  58.         }
  59.         else if(value == node.info){ // sme go nasle, treba da go izbriseme
  60.             if(node.left == null) {
  61.                 return node.right;
  62.             }
  63.             else if(node.right == null) {
  64.                 return node.left;
  65.             }
  66.             node.info = findMinimumValue(node.right);
  67.             node.right = deleteRecursive(node.right, node.info);
  68.         }
  69.         return node;
  70.     }
  71.     int findMinimumValue(Node node) {
  72.         int result = node.info;
  73.         while(node.left != null) {
  74.             result = node.left.info;
  75.             node = node.left;
  76.         }
  77.         return result;
  78.     }
  79.     void inorder() {
  80.         inorderRecursive(root);
  81.     }
  82.     void inorderRecursive(Node node) {
  83.         if(node == null) {
  84.             return;
  85.         }
  86.         inorderRecursive(node.left);
  87.         System.out.println(node.info + " ");
  88.         inorderRecursive(node.right);
  89.     }
  90.      public static BST createBSTFromArray(int[] array) {
  91.         BST newTree = new BST();
  92.         if(array.length > 0) {
  93.             newTree.root = createBSTFromArrayRecursive(array, 0, array.length - 1);
  94.         }
  95.         return newTree;
  96.     }
  97.     public static Node createBSTFromArrayRecursive(int[] array, int L, int R) {
  98.         if(L > R) {
  99.             return null;
  100.         }
  101.         int middle = (L + R) / 2;
  102.         Node root = new Node(array[middle]);
  103.         root.left = createBSTFromArrayRecursive(array, L, middle - 1);
  104.         root.right = createBSTFromArrayRecursive(array, middle + 1, R);
  105.  
  106.         return root;
  107.     }
  108. }
  109.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement