Сеть бинарных деревьев поиска с наследованием и полиморфизмом
Python
Сложный
classes
Задача «Сеть бинарных деревьев поиска с наследованием и полиморфизмом»
Реализуйте класс Node для узла бинарного дерева поиска (BST) с методами insert, search, delete. Создайте класс BST, который хранит корень и содержит методы insert (добавление значения), search (поиск значения, возвращает True/False), delete (удаление значения), и get_height (высота дерева). Затем создайте класс AVLTree, наследующий от BST, переопределяющий insert и delete для поддержки балансировки (с поворотами). Входные данные: последовательность команд. Команды: "insert x" добавить x, "delete x" удалить x (если есть), "search x" вывести "found" или "not found", "height" вывести высоту дерева. Для AVLTree после каждой вставки/удаления проверяется баланс (разница высот поддеревьев <= 1) и выполняется соответствующий поворот. Ограничения: -10^9 <= x <= 10^9, количество команд до 10^5.
Формат ввода
Первая строка: одно целое число n (1 <= n <= 10^5) — количество команд. Затем n строк, каждая содержит команду: insert x, delete x, search x или height.
Формат вывода
Для каждой команды search выведите "found" или "not found" в отдельной строке. Для команды height выведите одно целое число — высоту дерева (высота пустого дерева = 0).
Примеры
Пример 1
ВВОД
3
1 2 -3 4
-1 -2
5 0 3
ВЫВОД
Пример 2
ВВОД
2
0 0 0
2 -2 2 -2
ВЫВОД
main.py