所以我最近实现了一个非递归版本的 DFS。事实证明,只要将节点推入堆栈或弹出节点,我就可以将它们标记为“已访问”。我正在处理的问题特别说明了在将其推入堆栈时将其标记为“已访问”。两个版本都是某种 DFS。还是像一个是 DFS 而另一个不是。欢迎任何建议。
我认为,如果我采用第二种方式,它将模仿递归 dfs。但为什么另一个工作?
递归 dfs(请忽略这个)
dfsRec(node)
{
visitedArray[node]=1;
for all neighbours of node
if they aren't visited
dfsRec(neighbour);
}
dfs(startNode)
{
visitedArray;
dfsRec(startNode);
}