package ab;
import java.util.Enumeration;
import iv.FileAttente;

/** Classe décrivant une énumération d'un arbre binaire par niveaux séparés 
 *  par une marque. */
public class EnumerationParNiveauxSepares extends EnumerationParNiveau {
  private Object marque;

  public EnumerationParNiveauxSepares(ArbreBinaire a, Object marque) {
    super(a); 
    this.marque=marque;
    this.f.rentrer(marque);
    }

  public Object nextElement() {
    Object o = this.f.premier();
    this.f.sortir();
    if (this.f.vide()) return marque;
    if (o instanceof ArbreBinaire) {
       a = (ArbreBinaire) o;
       if (a.gauche != null) this.f.rentrer(a.gauche);
       if (a.droit != null) this.f.rentrer(a.droit);
       return a.racine;
       }
    else {this.f.rentrer(o);return o;}
    }
}

