DFS模板:
void dfs(根据需要传递相应的参数)
{
if(满足条件)退出当前函数
if(剪枝)剪掉该分支
如果以上都不满足就枚举情况进行递归
for(......) {
状态标记
dfs(...)
状态恢复
}
最终是否需要其他后续处理
}
实现举例:
public static void dfs(String parent, int depth, HashMap<String, List<String>> dirMap, List<String> list) {
List<String> children = dirMap.get(parent + "_" + depth); // 从map中获取要遍历的孩子列表
if (children == null) {
list.add(parent);
return;
}
for (String child : children) {
dfs(child, depth + 1, dirMap, list);
}
list.add(parent);
}