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