伪代码
Coddy 深度优先搜索:图算法 课程的第 4 课,共 9 课。
buildAdjacency(n, edges):
adj = n empty lists
for each pair (u, v) in edges:
adj[u].add(v)
adj[v].add(u) # undirected
sort every adj[i] ascending
dfs(n, edges, start):
build adjacency
visited = all false
stack = [start]
order = []
while stack not empty:
node = stack.pop()
if visited[node]: continue
visited[node] = true
order.add(node)
for nb in adj[node] from last to first:
if not visited[nb]: stack.push(nb)
return order- 邻接表会将扁平的边数组转换为每个顶点对应的邻居排序列表。
- 按从后到前的顺序压入邻居,会让栈先返回最小的邻居,因此访问顺序是确定的。
亲手试试
这节课没有代码挑战。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
深度优先搜索:图算法中的所有课
自己练习: C 在线编译器