DFS, 找所有方案 一定要用
BFS,找最短距离
DFS recursion 三个注意点:
- 定义
- 如何把问题 变小
- 出口
DFS 总结:
- template
- 注意点,所有dfs 的变种 其实都只在 dfsVisit recursion function 里面,
- for loop 开始与结束 位置
- if 语句决定 跳过 duplicate condition, 还是 进入到 下一层的dfsVisit recursion
Template of DFS
def dfs(V, adj):
parent = {}
for s in V:
if s not in parent:
parent[s] = None
dfs_visit(adj, s)
DFS - Visit:
parent = {s: None}
# adj is a set
def dfs_visit(adj, s):
for v in adj[s]:
if v not in parent:
parent[v] = s
dfs_visit(adj, s)