Java

// Depth-First Search Pseudocode von der Übungsstunde, mit Pre und Postzahlen

static t = 1        // Globale Zeitvariable für Pre- und Post-Zeiten

DFS(Adj):
    n = Adj.length
    visited[1...n] = {false, ..., false}   // Markiert, ob ein Knoten schon besucht wurde

    pre[1...n] = {-1, ..., -1}             // Pre-Zeiten (Zeitpunkt des ersten Besuchs)
    post[1...n] = {-1, ..., -1}            // Post-Zeiten (Zeitpunkt, wenn alle Nachbarn fertig sind)

    // Durchlaufe alle Knoten, um auch unzusammenhängende Graphen vollständig zu erkunden
    for v = 1...n:
        if visited[v] == false:
            Path(v, Adj, visited, pre, post)


Path(v, Adj, visited, pre, post):
    visited[v] = true       // Knoten v wird als besucht markiert
    pre[v] = t              // Pre-Zeit setzen
    t += 1

    // Rekursiv alle unbesuchten Nachbarn besuchen
    for u in Adj[v]:
        if visited[u] == false:
            Path(u, Adj, visited, pre, post)

    post[v] = t             // Post-Zeit setzen, nachdem alle Nachbarn abgeschlossen sind
    t += 1