# グラフgと始点ノードs
depthFristSearch(g, s):
    Stack st
    st.push(s)

    for i ← 0 to g.N - 1:
        color[i] ← WHITE

    color[s] ← GRAY
    
    while not st.empty():
        u ← st.peak() # スタックの頂点を見る
        v = g.next(u)      # ノードuに隣接するノードvを順番に取り出す
        if v ≠ NIL:    # 隣接するノードがある
            if color[v] = WHITE:
                color[v] ← GRAY
                st.push(v)
        else:              # 隣接するノードを調べつくした
            color[u] ← BLACK
            st.pop()