You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
513 B
C++
23 lines
513 B
C++
#pragma once
|
|
#include <queue>
|
|
|
|
#include "ifaces/INode.h"
|
|
|
|
#include "iterators/DFSIterator.h"
|
|
#include "iterators/BFSIterator.h"
|
|
|
|
template<typename Policy>
|
|
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<DFSIterator<INode>>;
|
|
using TraversalBFS = Traversal<BFSIterator<INode>>;
|