- BFS和DFS很重要,是许多算法题的基础
- 应用范围:图 or 树。
- 求解问题类型:可达性问题(遍历的节点都是从初始节点可达的)
- 中心思想:不撞南墙不回头(所以终止条件“南墙”的设置很重要)
目录
200. 岛屿的个数 & 46. 全排列 & 17. 电话号码的字母组合
1. 图/树 简述
首先我们简单介绍一下图和树
- 图(graph)表示物件与物件之间的关系的方法,一个图是由顶点(或称结点,vertex)和连接这些顶点的线(边,edge)组成的
- 树,大家应该很熟悉了(二叉树的题目也做了不少)N个点,N-1条边(只会有一条边指向自己,根节点没有所以是N-1).
- 图中的DFS示例
DFS搜索步骤: 从1开始(任意选择一个节点,这里选2) 1→2→3→4→6(到达尾端,返回4节点的另一个选择5) 6→5(全部遍历,end) path: 1→2→3→4→6→5(不唯一) (DFS像不像走迷宫?一条路走到黑不行我们再回到上一个起点寻找其他路) |
|
1→12→4→31→52→5→30→3→6 (在二叉树中,是不是就像二叉树的先序遍历) |