/* * Created on 15 nov. 2004 * */ package arbre; import java.util.Iterator; import java.util.NoSuchElementException; /** * @author baudon * */ public class ArbreIteration implements Iterator { private Arbre suivant; public ArbreIteration(Arbre a) { suivant = premier(a); } private Arbre premier(Arbre a) { if (a.gauche() != null) { return premier(a.gauche()); } else if (a.droit() != null) { return premier(a.droit()); } else { return a; } } private Arbre suivant(Arbre a) { Arbre pere = a.pere(); if (pere != null && pere.gauche() == a && pere.droit() != null) { return premier(pere.droit()); } else { return pere; } } public boolean hasNext() { return suivant != null; } public T next() { if (suivant == null) { throw new NoSuchElementException(); } T res = suivant.data(); suivant = suivant(suivant); return res; } public void remove() { throw new UnsupportedOperationException(); } }