我在这个问题上花了很多时间。但是,我只能为树找到具有非递归方法的解决方案:树的非递归方法,或图的递归方法,图的递归方法。
许多教程(我在这里不提供这些链接)也没有提供方法。或者教程完全不正确。请帮我。
更新:
真的很难形容:
如果我有一个无向图:
1
/ | \
4 | 2
3 /
1-- 2-- 3 --1是一个循环。
在这一步:'将弹出顶点的邻居推入堆栈',顶点应该被推入的顺序是什么?
如果压入顺序为2
, 4
, 3
, 则栈中的顶点为:
| |
|3|
|4|
|2|
_
弹出节点后,我们得到结果:1 -> 3 -> 4 -> 2
而不是1--> 3 --> 2 -->4
.
这是不正确的。我应该添加什么条件来停止这种情况?