#ifndef PREORDERTREETRAVERSAL_H
#define PREORDERTREETRAVERSAL_H
#include "node.h"
template <class T>
class preorderTreeTraversal
{
public:
preorderTreeTraversal(node<T>* root) : current(root) {}
preorderTreeTraversal<T>& operator++(int);
friend bool operator!=(preorderTreeTraversal<T>& lhs,
preorderTreeTraversal<T>& rhs);
protected:
node<T>* current;
};
// stub function implementation. Always turns this object into an "end of tree" preorderiterator
template <class T>
preorderTreeTraversal<T>&
preorderTreeTraversal<T>::operator ++(int)
{
current = NULL;
return *(this);
}
template <class T>
bool operator!=(preorderTreeTraversal<T>& lhs, preorderTreeTraversal<T>& rhs)
{
return lhs.current != rhs.current;
}
#endif