Il est possible de transformer la version récursive du parcours en profondeur en une version itérative, à l'aide d'une pile. Les sommets du graphe sont empilés et traités au dépilement. Seules importent les fonctionnalités des piles, une implémentation quelconque des piles peut être utilisée. L'ensemble des sommets visités est la réunion de l'ensemble des sommets visités une première fois (qui sont dans la pile) et de l'ensemble des sommets traités (qui ont été dépilés).
static void parcoursProfondeur(Sommet origine, Set sommetsVisités, Traitement pré, Traitement post) { Pile pile = new PileParListe() ; pile.empiler(origine); sommetsVisités.add(origine); while (!pile.estVide()) { Sommet s = (Sommet)pile.dépiler(); pré.traite(s); Iterator i = s.adjacents(); while (i.hasNext()) { Sommet suivant = (Sommet)i.next(); if (!sommetsVisités.contains(suivant)) { pile.empiler(suivant); sommetsVisités.add(suivant); } } post.traite(s); } }