| | | | | |

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 ();
  };

| | Top of Page | 14. BST Iterators - 26 of 41