private class InordenIterator implements Iterator<T>
{
private Stakk<Node<T>> s = new TabellStakk<>();
private Node<T> p = null;
private Node<T> først(Node<T> q)
{
while (q.venstre != null)
{
s.leggInn(q);
q = q.venstre;
}
return q;
}
private InordenIterator()
{
if (tom()) return;
p = først(rot);
}
@Override
public T next()
{
if (!hasNext()) throw new NoSuchElementException("Ingen verdier!");
T verdi = p.verdi;
if (p.høyre != null) p = først(p.høyre);
else if (s.tom()) p = null;
else p = s.taUt();
return verdi;
}
@Override
public boolean hasNext()
{
return p != null;
}
}