# 对图 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()