14
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
Graph g
myG.txt
13
13
0 5
4 3
0 1
9 12
6 4
5 4
0 2
11 12
9 10
0 6
7 8
9 11
5 3
V
E
V-E lists
Adjacency lists
adj[]
0
1
2
3
4
5
6
6
3
5
5
2
0
1 5
0
4
6 3
0 4
4 0
15
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
visit 0: Which one first?
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 F -
4 F -
5 F -
6 F -
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
16
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
visit 0: check 6, check 2, check 1, and check 5
Adjacency lists
adj[]
0
1
2
3
4
5
6
6
3
5
5
2
0
1 5
0
4
6 3
0 4
4 0
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 F -
4 F -
5 F -
6 F -
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
17
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
visit 6: check 0, check 4
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 F -
4 F -
5 F -
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
Adjacency lists
adj[]
0
1
2
3
4
5
6
6
3
5
5
2
0
1 5
0
4
6 3
0 4
4 0
18
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
visit 4: check 5, check 6, check 3
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 F -
4 T 6
5 F -
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
adj[]
0
1
2
3
4
5
6
6
3
5
5
2
0
1 5
0
4
6 3
0 4
4 0
19
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
visit 5: check 3, check 4, check 0
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 F -
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
adj[]
0
1
2
3
4
5
6
6
3
5
5
2
0
1 5
0
4
6 3
0 4
4 0
20
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
visit 5: check 3, check 4, check 0
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 F -
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
21
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
visit 5: check 3, check 4, check 0
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
22
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
visit 3: check 5, check 4
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
Adjacency lists
adj[]
0
1
2
3
4
5
6
6
3
5
5
2
0
1 5
0
4
6 3
0 4
4 0
23
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
visit 3: check 5, check 4
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
24
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
visit 3: check 5, check 4
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
25
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
visit 3: check 5, check 4
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
26
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
3 done:
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
27
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
visit 5: check 3, check 4, check 0
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
done
adj[]
0
1
2
3
4
5
6
6
3
5
5
2
0
1 5
0
4
6 3
0 4
4 0
28
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
visit 5: check 3, check 4, check 0
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
done
29
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
visit 5: check 3, check 4, check 0
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
done
30
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
visit 5: check 3, check 4, check 0
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
done
31
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
5 done
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
32
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 4: check 5, check 6, check 3
33
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 4: check 5, check 6, check 3
34
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 6: check 0, check 4
35
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 6: check 0, check 4
done 6
36
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
v marked[] edgeTo[v]
0 T -
1 F -
2 T 0
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 0: check 6, check 2, check 1, and check 5
Adjacency lists
adj[]
0
1
2
3
4
5
6
6
3
5
5
2
0
1 5
0
4
6 3
0 4
4 0
37
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
v marked[] edgeTo[v]
0 T -
1 F -
2 T 0
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 2: check 0
Adjacency lists
adj[]
0
1
2
3
4
5
6
6
3
5
5
2
0
1 5
0
4
6 3
0 4
4 0
38
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
v marked[] edgeTo[v]
0 T -
1 F -
2 T 0
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 2: check 0
39
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
v marked[] edgeTo[v]
0 T -
1 F -
2 T 0
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 0: check 6, check 2, check 1, and check 5
40
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
v marked[] edgeTo[v]
0 T -
1 T 0
2 T 0
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 1: check 0
41
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
v marked[] edgeTo[v]
0 T -
1 T 0
2 T 0
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 0: check 6, check 2, check 1, and check 5
42
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
v marked[] edgeTo[v]
0 T -
1 T 0
2 T 0
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 0: check 6, check 2, check 1, and check 5
0 done
43
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
v marked[] edgeTo[v]
0 T -
1 T 0
2 T 0
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
• found vertices reachable from 0 – dfs:0, 6, 4, 5, 3, 2, 1
• built a data structure edgeTo[v]

Graph dfs-and-path

  • 1.
    14 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 Graph g myG.txt 13 13 0 5 4 3 0 1 9 12 6 4 5 4 0 2 11 12 9 10 0 6 7 8 9 11 5 3 V E V-E lists Adjacency lists adj[] 0 1 2 3 4 5 6 6 3 5 5 2 0 1 5 0 4 6 3 0 4 4 0
  • 2.
    15 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 visit 0: Which one first? v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 F - 4 F - 5 F - 6 F - 7 F - 8 F - 9 F - 10 F - 11 F - 12 F -
  • 3.
    16 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 visit 0: check 6, check 2, check 1, and check 5 Adjacency lists adj[] 0 1 2 3 4 5 6 6 3 5 5 2 0 1 5 0 4 6 3 0 4 4 0 v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 F - 4 F - 5 F - 6 F - 7 F - 8 F - 9 F - 10 F - 11 F - 12 F -
  • 4.
    17 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 visit 6: check 0, check 4 v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 F - 4 F - 5 F - 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F - Adjacency lists adj[] 0 1 2 3 4 5 6 6 3 5 5 2 0 1 5 0 4 6 3 0 4 4 0
  • 5.
    18 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 visit 4: check 5, check 6, check 3 v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 F - 4 T 6 5 F - 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F - adj[] 0 1 2 3 4 5 6 6 3 5 5 2 0 1 5 0 4 6 3 0 4 4 0
  • 6.
    19 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 visit 5: check 3, check 4, check 0 v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 F - 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F - adj[] 0 1 2 3 4 5 6 6 3 5 5 2 0 1 5 0 4 6 3 0 4 4 0
  • 7.
    20 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 visit 5: check 3, check 4, check 0 v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 F - 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F -
  • 8.
    21 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 visit 5: check 3, check 4, check 0 v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F -
  • 9.
    22 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 visit 3: check 5, check 4 v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F - Adjacency lists adj[] 0 1 2 3 4 5 6 6 3 5 5 2 0 1 5 0 4 6 3 0 4 4 0
  • 10.
    23 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 visit 3: check 5, check 4 v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F -
  • 11.
    24 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 visit 3: check 5, check 4 v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F -
  • 12.
    25 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 visit 3: check 5, check 4 v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F -
  • 13.
    26 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 3 done: v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F -
  • 14.
    27 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 visit 5: check 3, check 4, check 0 v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F - done adj[] 0 1 2 3 4 5 6 6 3 5 5 2 0 1 5 0 4 6 3 0 4 4 0
  • 15.
    28 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 visit 5: check 3, check 4, check 0 v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F - done
  • 16.
    29 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 visit 5: check 3, check 4, check 0 v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F - done
  • 17.
    30 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 visit 5: check 3, check 4, check 0 v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F - done
  • 18.
    31 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 5 done v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F -
  • 19.
    32 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F - visit 4: check 5, check 6, check 3
  • 20.
    33 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F - visit 4: check 5, check 6, check 3
  • 21.
    34 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F - visit 6: check 0, check 4
  • 22.
    35 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 v marked[] edgeTo[v] 0 T - 1 F - 2 F - 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F - visit 6: check 0, check 4 done 6
  • 23.
    36 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 v marked[] edgeTo[v] 0 T - 1 F - 2 T 0 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F - visit 0: check 6, check 2, check 1, and check 5 Adjacency lists adj[] 0 1 2 3 4 5 6 6 3 5 5 2 0 1 5 0 4 6 3 0 4 4 0
  • 24.
    37 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 v marked[] edgeTo[v] 0 T - 1 F - 2 T 0 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F - visit 2: check 0 Adjacency lists adj[] 0 1 2 3 4 5 6 6 3 5 5 2 0 1 5 0 4 6 3 0 4 4 0
  • 25.
    38 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 v marked[] edgeTo[v] 0 T - 1 F - 2 T 0 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F - visit 2: check 0
  • 26.
    39 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 v marked[] edgeTo[v] 0 T - 1 F - 2 T 0 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F - visit 0: check 6, check 2, check 1, and check 5
  • 27.
    40 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 v marked[] edgeTo[v] 0 T - 1 T 0 2 T 0 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F - visit 1: check 0
  • 28.
    41 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 v marked[] edgeTo[v] 0 T - 1 T 0 2 T 0 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F - visit 0: check 6, check 2, check 1, and check 5
  • 29.
    42 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 v marked[] edgeTo[v] 0 T - 1 T 0 2 T 0 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F - visit 0: check 6, check 2, check 1, and check 5 0 done
  • 30.
    43 Depth-first search demo Tovisit a vertex v: • Mark vertex v as visited. • Recursively visit all unmarked vertices adjacent to v. 0 1 2 6 5 3 4 7 8 9 10 11 12 v marked[] edgeTo[v] 0 T - 1 T 0 2 T 0 3 T 5 4 T 6 5 T 4 6 T 0 7 F - 8 F - 9 F - 10 F - 11 F - 12 F - • found vertices reachable from 0 – dfs:0, 6, 4, 5, 3, 2, 1 • built a data structure edgeTo[v]