//dfs 递归
DFS(Vertex S,Vertex G,HashSet visited, HashMap parents){
if(S == G) retrun;
for each of S's neighbors, node , not in visited
add n to visited set
add S as node;s parent in parents map
DFS(node, G, visited, parents)
}
//dfs 循环
DFS(Vertex S,Vertex G){
Initialize: stack, visited HashSet and parent Hashmap
Push S onto the stack
Add S to visited
while stack is not empty:
pop node curr from top of stack
if curr == G return
for each of curr's neightbors, node, not in visited
add node to visited set
add curr as node's parent in parent map
push node onto stack
}
// bfs
BFS(Vertex S,Vertex G){
Initialize: queue, visited HashSet and parent Hashmap
Enqueue S onto the queue
Add S to visited
while queue is not empty:
dequeue node curr from front of queue
if curr == G return
for each of curr's neightbors, node, not in visited
add node to visited set
add curr as node's parent in parent map
enqueue node onto queue
}