АВТ
Язык:

Дистанционный практикум по программированию

Задачи On-line статус ЧаВо Турниры
Для авторов:
 
Здравствуйте, Гость! Войдите с паролем или зарегистрируйтесь.

215. Двоичное дерево поиска

Ограничение времени: 1 секунды
Ограничение памяти:64000КБ
Баллы:5
Статистика Послать на проверку Задачу добавил Неизвестный

Вам требуется написать программу для работы с двоичным деревом поиска, реализующую основные операции:
  • вставка элемента
  • удаление элемента
  • поиск элемента
На вход подаётся последовательность целых чисел (в интервале от 1 до 1000000000), после каждого числа через пробел стоит знак
'+', если число нужно добавить в дерево,
'-', если число нужно удалить из дерева.
Если при вставке элемента он уже есть в дереве, ничего делать не надо. Если при удалении элемента его нет в дереве, делать тоже ничего не надо.

Входные данные: в каждой строке входного файла содержится число, затем пробел и символ '+' или '-'. Количество строк не превышает 100000. Гарантируется отсутствие "плохих" входных данных (случаев, когда много данных изначально упорядочено или почти упорядочено).

Выходные данные: В первой строке выведите количество элементов в дереве. Во второй строке выведите в порядке возрастания через пробел все числа, находящиеся в дереве.

Пример входных данных:
3 +
1 +
25347 +
1 -
3 +
8 +

Пример выходных данных:
3
3 8 25347

Пояснение к примеру - результирующее дерево:


Статистика Послать на проверку Автор/источник:
Задачи по темам / Динамические структуры данных /
1063. RMQ 215. 253. Луч 24. Однострочный редактор 863. Очередь
Учебные курсы / ПЯВУ. Язык C/C++ / Продолжение следует /
215. 243. Деревья 97. Прогрессия
 
время генерации 0.421 сек.
© Copyright ВоГТУ, АВТ, Носов Д.А.