Реализуйте двоичное дерево поиска в виде шаблонного класса на языке С++. При реализации ориентируйтесь на интерфейс контейнера std::set из стандартной библиотеки (вместо итераторов допустимо использовать указатели на непосредственно узлы). В структуре узла обязан быть указатель на родительский узел.
1. Реализовать операции:
Добавление элемента.
Поиск элемента.
Поиск минимального и максимального элементов.
Удаление элементов.
Поиск первого элемента, меньше или равного заданному и первого больше заданного (см. семантику lower_bound/upper_bound из стандартной библиотеки).
Вывод на экран:
Левый/Текущий/Правый, с использованием рекурсии.
Правый/Текущий/Левый, с использованием стека и без рекурсии.
По слоям, с использованием очереди.
Сравнение двух деревьев на равенство с учётом структуры, рекурсивно.
Поиск для заданного (в виде указателя, а лучше итератора) элемента следующего и предыдущего элементов (два разных метода). Учтите, что следующим элементом не всегда является непосредственный потомок заданного узла. Поведение должно быть аналогичным оператору ++ у итератора для стандартного set.
2. Реализуйте алгоритм "Решето Эратосфена" двумя разными способами и сравните эффективность:
На основе вашего бинарного дерева поиска.
На основе массива.
Гарантия на работу | 1 год |
Средний балл | 4.55 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |