algorithm - DFS 递归与 DFS 迭代

标签 algorithm recursion depth-first-search

<分区>

我试图了解 DFS 递归和 DFS 迭代之间的区别。有堆栈的是使用迭代还是递归方法?

例如,使用图的 DFS 递归遍历和图的 DFS 迭代遍历会输出什么?邻居按字母顺序迭代。

这是图表:

enter image description here

对于 DFS 遍历(带堆栈的遍历,不确定它是递归的还是迭代的)这是我得到的:A、C、D、E、F。有人可以确认这是什么类型的 DFS 遍历,以及另一个如何工作?谢谢!

最佳答案

据我了解,递归和迭代版本的区别仅在于堆栈的使用。递归版本使用调用堆栈,而迭代版本执行完全相同的步骤,但使用用户定义的堆栈而不是调用堆栈。步骤顺序本身没有区别(如果使用合适的打破平局规则来确保子节点的遍历顺序相同 - 如果需要的话),因此不可能检查输出来决定是使用迭代实现还是递归实现.

关于algorithm - DFS 递归与 DFS 迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27033429/

相关文章:

algorithm - 使用 Kruskal 算法查找图的最小生成树

c - 棘手的递归函数007

javascript - 访问多维数组中的每个值

c++ - 深度优先搜索的实现和改进

java - DFS 未正确执行

algorithm - 在 DFS 中对一个顶点使用 3 个状态有什么好处?

python - 最大矩形算法实现

algorithm - Excel多项式曲线拟合算法

java - k-means 在 mapreduce 中对特定集群中的文件进行分组

c - 二进制 * 的无效操作数(有 ‘int’ 和 ‘int *’ )