DFS BFS
DFS
-
DFS递归
通过传入参数拷贝,来记忆递归/回溯到的位置
-
DFS回溯
即:试错探索的回到上一步->将所作的变动全部还原,少任何一个就错f(x+1)回溯时,x将回到没加1的情况(直接在递归入口的参数表中写上变化,回溯时等于没变化)
递归程序本质还是线性执行,只有执行到不可再递归,return结束该次递归,之后进入别的递归入口,才会达到意义上的分叉。
-
DFS框架
- 在递归入口之前都是一定会执行的 停止判断、探索判断部分
- 递归入口后,应该是下一个分支的入口(循环给不同入口)
-
核心概念
每一层走一步,不行撤回来,通过循环:选择别的方向走一步,进入下一层
代码模板
BFS
-
核心概念
bfs就是进去一步后,查找记录下当前位置所有可扩展路线(队列),但下一步走的是之前记录过的路线而已(循环出队)
-
BFS框架
其他
总之这两个特性像模块,完全可以拆除独立拼接使用