Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //BFS
- public String toStringBreadthFirst() {
- StringBuilder result = new StringBuilder();
- if (root != null) {
- Queue<Node<T>> nodes = new LinkedList<>();
- nodes.add(root);
- while (!nodes.isEmpty()) {
- Node<T> current = nodes.remove();
- result.append("Key:").append(current.key).append("; Value:").append(current.value).append("\n");
- if (current.left != null) {
- nodes.add(current.left);
- }
- if (current.right != null) {
- nodes.add(current.right);
- }
- }
- } else {
- result.append("");
- }
- return result.toString();
- }
- // DFS
- public String toString() {
- StringBuilder result = new StringBuilder();
- return recursiveDepthFirst(root, result);
- }
- private String recursiveDepthFirst(Node<T> current, StringBuilder result) {
- if (current != null) {
- recursiveDepthFirst(current.left, result);
- result.append("Key:").append(current.key).append("; Value:").append(current.value).append("\n");
- recursiveDepthFirst(current.right, result);
- }
- return result.toString();
- }
- //УДАЛЕНИЕ
- public void delete(int key) {
- root = deleteRecursively(root, key);
- }
- private Node<T> deleteRecursively(Node<T> current, int key) {
- if (current == null) {
- return null;
- }
- if (key < current.key) {
- current.left = deleteRecursively(current.left, key);
- return current;
- } else if (key > current.key) {
- current.right = deleteRecursively(current.right, key);
- return current;
- }
- if (current.left == null) {
- return current.right;
- } else if (current.right == null) {
- return current.left;
- } else {
- current.key = findSmallestKey(current.right);
- current.right = deleteRecursively(current.right, current.key);
- return current;
- }
- }
- private int findSmallestKey(Node<T> current) {
- return current.left == null ? current.key : findSmallestKey(current.left);
- }
Add Comment
Please, Sign In to add comment