Breadth-first search, starting at node B
Given:
-- A graph G = (V, E), where the vertices in V have integer IDs
-- An empty queue Q of vertex IDs
-- An empty list L of edges
-- A function Visit(vertex) that does whatever it is your program needs
The algorithm:
B.visited = true
Visit(B)
Q.enqueue(B)
while (Q is not empty) {
V = Q.dequeue()
for each unvisited neighbor W of V
(in increasing numerical order)
{
W.visited = true
Visit(W)
Q.enqueue(W)
L.add((V, W))
}
}
Depth-first search, starting at node B
Given:
-- A graph G = (V, E), where the vertices in V have integer IDs
-- An empty stack S of vertex IDs
-- An empty list L of edges
-- A function Visit(vertex) that does whatever it is your program needs
to do when it first encounters a vertex during this traversal.
The algorithm:
B.visited = true
Visit(B)
Push B onto S
while (S is not empty) {
V = S.peek()
if (V has any unvisited neighbors) {
Let W be the unvisited neighbor of V with
the smallest ID
W.visited = true
Visit(W)
S.push(W)
L.add((V, W))
} else {
S.pop()
}
}