DFS
Recursive version (naturally use stack)
Pseudo code
DFS (graph G, start vertex v)
Mark v as explored
for all edges from v to w in G.adjacentEdges(v) do
if vertex w is not labeled as explored then
recursively call DFS(G,w)