DFS,深度优先遍历,图的一种常用的遍历方式。核心思想是从每个节点,沿着子节点一直走,走到最深,因此叫做深度优先。
常见的方式是用递归的方法实现的,但是递归有一个问题需要注意递归的深度,因此在某些情况下需要用到迭代到方式。
DFS的本质是一个栈的形式。栈是一种后进先出的数据结构,也就是说会优先处理最近添加的数据。这个和DFS的处理方法不谋而合。因此我们可以用这个栈来模拟DFS过程。
为了防止重复访问节点,因此需要一个visit数组来去重。
迭代实现cpp代码如下:
# 传入一个根节点
# 我们采用邻接表的方式表示一个图。邻接表就是给定一个节点,可以找到这个节点的全部邻居。
using namespace std;
void