DFS(深度优先搜索):
1.概念;
官方:事实上,深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次.
个人理解:以深度为先,以一定的方向一条路走到尽头为止后原路返回
再继续以定的方向一条路走到尽头为止后原路返回…………
的方式去遍历每一条路。
2.图解:
什么叫以一定的方向呢?可以规定遍历方向为:右,下,左,上。
例如6号位置,有四条路可以走,因为我们人为规定了方向,所以它得先从右开始走起。
观察起点,不难发现起点就只有一条向下的路可以走,到达1号点后,
有两条路可走,由于规定了方向,所以向往右到达2号点,
以此类推到达4号点后,向右走不通,所以向下走到8号点,8号点的右也不通,所以走到12号点。
接着继续走到16,15,14,13,9,10,11。每到达一个点后都需要标记此点是已经走过的。
这样就遍历完了一条路。
接着开始原路返回
从11->10,因为刚刚10是从右到11,10的下不通,左边9号由于被标记了,所以只能往上走到6号,注意从10->6之后需要把10号标记取消!
之后6->7,由于7的右边8已被标记,所以向下到达11.
这样就遍历完第二条路了。
这时候原来返回到7…………
看到这里,对于DFS应该有了一定的认知了吧,现在开始实操代码吧
3.代码实现:以上面的图为例子。