Levelorder Iterator Using Queue
Works for 2-D alternative (no parent pointers)
template < class C >
class LevelorderBTIterator // patterns: ConstIterator, ForwardIterator
{
public: // terminology support
typedef typename C::ValueType ValueType;
typedef typename C::Node Node;
typedef LevelorderBTIterator<C> ConstIterator;
typedef LevelorderBTIterator<C> Iterator;
// proper type ...
...
const ValueType& operator* () const { return que_.Front()->value_; }
...
LevelorderBTIterator<C>& operator++ (); // prefix
LevelorderBTIterator<C> operator++ (int); // postfix
// no operator --
private:
friend C;
fsu::Queue < Node* > que_; // default is deque-based
void Init (Node* n);
void Increment ();
};