(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 */