Бинарное дерево поиска. Шаблоны. STL.
Реализовать три STL-совместимых контейнера для BinarySearchTree, реализующие различные способы обхода дерева (in-, pre-, post-order) через итератор.
Контейнер должен предоставлять из себя шаблон, параметризуемый типом хранимых объектов, оператором сравнения и аллокатором, а так же удовлетворять следующим требованиям к stl - совместимым контейнерам:
- контейнера
- ассоциативный контейнера
- контейнера с обратным итератором
- контейнера поддерживающие аллокатор
- обладать двунаправленным итератором
Способ обхода дерева должен быть реализован через итератор, те оператор "++" должен приводить к перемещению итератора к следующему элементу в дереве, согласно правилу обхода.
Все вышеуказанные требования должны быть покрыты тестами, с помощью фреймворка Google Test.
- Запрещено использовать стандартные контейнеры
Рекомендуется не создавать три отдельных контейнера, а вместо этого использовать Tag Dispatch Idiom.