(Latest Revision: Tue Oct 31 22:28:41 PST 2000 )
ALGORITHM FOR A DEPTH-FIRST TRAVERSAL
/* Traverse a graph, starting at vertex v. */
dfs (in v:Vertex)
{
s.createStack() ;
mark v as visited ;
s.push(v) ;
/* LOOP INVARIANT: THERE IS PATH FROM VERTEX v AT THE BOTTOM
OF THE STACK s TO THE VERTEX AT THE TOP OF s. */
while ( !s.isEmpty() )
{
/* LOOK FOR AN UNVISITED NODE ADJACENT TO THE TOP NODE. */
if (no unvisited vertices are adjacent to the vertex on the
top of the stack)
s.pop() ; /* (BACKTRACK) */
else
{
/* SELECT AN UNVISITED VERTEX u ADJACENT TO THE
VERTEX ON THE TOP OF THE STACK. */
mark u as visited ;
s.push(u) ;
} /* end if-else */
} /* end while */
} /* end dfs */