DFS

1 Basic

  • 深度优先搜索(Depth-first Search)中,90%的问题,不是求组合(Combination)就是求排列(Permutation)

  • 组合问题可以参考全子集问题,排列问题可以参考全排列问题

  • Backtracking是DFS中一个非常重要的部分,经典题目需要非常熟练掌握

  • DFS经常需要进行Deep Copy来传入搜索的结果

  • 利用DFS进行暴力枚举也是一种常见的情况

  • 通常结果数目就是时间复杂度

2 Search/Traverse

  • DFS更多的还是作为搜索算法,可以递归的进行遍历,没有返回值

  • 或者作为某些条件下的遍历

  • 也可以在递归的时候进行分治算法,有返回值,如果有重复子问题或者优化结构,可以引入memo表

3 Memo

  • 一个很重要的内容是记忆化,可以延伸至Top-Bottom的动态规划的一类问题

4 Path

  • 最短路径

  • 指定路径

  • 图相关问题

Last updated