DFS BFS

DFS BFS

DFS
  1. DFS递归

    通过传入参数拷贝,来记忆递归/回溯到的位置

  2. DFS回溯
    即:试错探索的回到上一步->将所作的变动全部还原,少任何一个就错

    f(x+1)回溯时,x将回到没加1的情况(直接在递归入口的参数表中写上变化,回溯时等于没变化)

    递归程序本质还是线性执行,只有执行到不可再递归,return结束该次递归,之后进入别的递归入口,才会达到意义上的分叉。

  3. DFS框架

    1. 在递归入口之前都是一定会执行的 停止判断、探索判断部分
    2. 递归入口后,应该是下一个分支的入口(循环给不同入口)

    DFS

  4. 核心概念

    每一层走一步,不行撤回来,通过循环:选择别的方向走一步,进入下一层

代码模板

BFS
  1. 核心概念

    bfs就是进去一步后,查找记录下当前位置所有可扩展路线(队列),但下一步走的是之前记录过的路线而已(循环出队)

  2. BFS框架

其他

总之这两个特性像模块,完全可以拆除独立拼接使用