#pragma once #include #include "ifaces/INode.h" #include "iterators/DFSIterator.h" #include "iterators/BFSIterator.h" template class Traversal { INode* start; public: explicit Traversal(INode* start) : start(start) {} explicit Traversal(NodePtr start) : start(start.get()) {} Policy begin() const { return Policy(start); } Policy end() const { return Policy(nullptr); } }; using TraversalDFS = Traversal>; using TraversalBFS = Traversal>;