private static List<String> dfs( final DAG graph ) { // we need to use addFirst method so we will use LinkedList explicitly final List<String> retValue = new LinkedList<String>(); final Map<Vertex, Integer> vertexStateMap = new HashMap<Vertex, Integer>(); for ( Vertex vertex : graph.getVertices() ) { if ( isNotVisited( vertex, vertexStateMap ) ) { dfsVisit( vertex, vertexStateMap, retValue ); } } return retValue; }
private static void dfsVisit( final Vertex vertex, final Map<Vertex, Integer> vertexStateMap, final List<String> list ) { vertexStateMap.put( vertex, VISITING ); for ( Vertex v : vertex.getChildren() ) { if ( isNotVisited( v, vertexStateMap ) ) { dfsVisit( v, vertexStateMap, list ); } } vertexStateMap.put( vertex, VISITED ); list.add( vertex.getLabel() ); }