class ArbreBinaire { int étiquette; ArbreBinaire gauche; ArbreBinaire droit; // ... public String toString() { StringBuffer tampon = new StringBuffer(); Pile p = new PileParListe(); p.empiler(this); while (!p.estVide()) { ArbreBinaire t = (ArbreBinaire) p.dépiler(); if (t != null) { tampon.append(t.étiquette).append(" "); p.empiler(t.droit); p.empiler(t.gauche); } } return tampon.toString(); } }
Ici, PileParListe est une réalisation de l'interface Pile. Il est inutile d'en connaître le contenu pour définir la méthode toString. Si l'on préférait utiliser une autre réalisation de Pile, soit PileParTableau, il suffirait de remplacer l'appel au constructeur PileParListe par un appel au constructeur PileParTableau.
Du fait de la généricité de Pile, la valeur retournée par dépiler est de type Object ; avant de l'affecter à t, on doit lui appliquer un transtypage vers le type ArbreBinaire, de façon à pouvoir accéder aux membres de la classe ArbreBinaire à travers t.