Vanya_Shestakov

BT

Mar 25th, 2021 (edited)
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.26 KB | None | 0 0
  1. //BFS
  2.     public String toStringBreadthFirst() {
  3.         StringBuilder result = new StringBuilder();
  4.         if (root != null) {
  5.             Queue<Node<T>> nodes = new LinkedList<>();
  6.             nodes.add(root);
  7.             while (!nodes.isEmpty()) {
  8.                 Node<T> current = nodes.remove();
  9.                 result.append("Key:").append(current.key).append("; Value:").append(current.value).append("\n");
  10.                 if (current.left != null) {
  11.                     nodes.add(current.left);
  12.                 }
  13.  
  14.                 if (current.right != null) {
  15.                     nodes.add(current.right);
  16.                 }
  17.             }
  18.         } else {
  19.             result.append("");
  20.         }
  21.         return result.toString();
  22.     }
  23.  
  24. // DFS
  25.     public String toString() {
  26.         StringBuilder result = new StringBuilder();
  27.         return recursiveDepthFirst(root, result);
  28.     }  
  29.  
  30.     private String recursiveDepthFirst(Node<T> current, StringBuilder result) {
  31.         if (current != null) {
  32.             recursiveDepthFirst(current.left, result);
  33.             result.append("Key:").append(current.key).append("; Value:").append(current.value).append("\n");
  34.             recursiveDepthFirst(current.right, result);
  35.         }
  36.         return result.toString();
  37.     }
  38.  
  39. //УДАЛЕНИЕ
  40.     public void delete(int key) {
  41.         root = deleteRecursively(root, key);
  42.     }
  43.  
  44.     private Node<T> deleteRecursively(Node<T> current, int key) {
  45.         if (current == null) {
  46.             return null;
  47.         }
  48.         if (key < current.key) {
  49.             current.left = deleteRecursively(current.left, key);
  50.             return current;
  51.         } else if (key > current.key) {
  52.             current.right = deleteRecursively(current.right, key);
  53.             return current;
  54.         }
  55.         if (current.left == null) {
  56.             return current.right;
  57.         } else if (current.right == null) {
  58.             return current.left;
  59.         } else {
  60.             current.key = findSmallestKey(current.right);
  61.             current.right = deleteRecursively(current.right, current.key);
  62.             return current;
  63.         }
  64.     }
  65.  
  66.     private int findSmallestKey(Node<T> current) {
  67.         return current.left == null ? current.key : findSmallestKey(current.left);
  68.     }
  69.  
Add Comment
Please, Sign In to add comment