What is DFS
深度优先搜索算法(Depth-First-Search),是一种搜索算法。沿着树的深度遍历树的节点,尽可能深地搜索树的分支。当节点n的所在边都己被探寻过,搜索将回溯到发现节点n的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止,属于盲目搜索。
下面是几个容易混淆的概念:递归,回溯,DFS
- 回溯(backtracking)是一种找路方法,搜索的时候走不通就回头换路接着走,直到走通了或者发现这条路根本不通。
- DFS是一种开路策略,就是一条道先走到头,再往回走一步换一条路走到头,这也是回溯用到的策略。在树和图上回溯时人们叫它DFS。
- 递归是一种行为,回溯和递归如出一辙,都是一言不合就回到来时的路,所以一般回溯用递归实现,当然也可以用栈。