/
Skob.m.a
/
WorkSpace
Обзор
Документация
Войти
/
Skob.m.a
/
WorkSpace
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Task_30_2
109 строк
3 KB
Skob.m.a
create Task_30_2
22 дек 2024, 16:30
22 дек 2024, 16:30
e91e51d
Код
Авторство
О чём код?
class TreeNode { int value; TreeNode left; TreeNode right; TreeNode(int value) { this.value = value; this.left = null; this.right = null; } } class BinarySearchTree { private TreeNode root; public void add(int value) { root = addRecursive(root, value); } private TreeNode addRecursive(TreeNode current, int value) { if (current == null) { return new TreeNode(value); } if (value < current.value) { current.left = addRecursive(current.left, value); } else if (value > current.value) { current.right = addRecursive(current.right, value); } return current; } public void printInOrder() { printInOrderRecursive(root); System.out.println(); } private void printInOrderRecursive(TreeNode node) { if (node != null) { printInOrderRecursive(node.left); System.out.print(node.value + " "); printInOrderRecursive(node.right); } } public void remove(int value) { root = removeRecursive(root, value); } private TreeNode removeRecursive(TreeNode current, int value) { if (current == null) { return null; } if (value == current.value) { if (current.left == null && current.right == null) { return null; } if (current.right == null) { return current.left; } if (current.left == null) { return current.right; } int smallestValue = findSmallestValue(current.right); current.value = smallestValue; current.right = removeRecursive(current.right, smallestValue); return current; } if (value < current.value) { current.left = removeRecursive(current.left, value); return current; } current.right = removeRecursive(current.right, value); return current; } private int findSmallestValue(TreeNode root) { return root.left == null ? root.value : findSmallestValue(root.left); } public void clear() { root = null; } } public class Main { public static void main(String[] args) { BinarySearchTree bst = new BinarySearchTree(); int[] values = {50, 30, 70, 20, 40, 60, 80, 10, 90, 55}; for (int value : values) { bst.add(value); } System.out.println("Содержимое дерева (инфиксный обход):"); bst.printInOrder(); // Удаляем один узел System.out.println("Удаляем узел со значением 70:"); bst.remove(70); System.out.println("Содержимое дерева после удаления узла 70:"); bst.printInOrder(); bst.clear(); System.out.println("Дерево очищено."); } }