![]() |
1
19
如果你正在进行深度优先搜索,那么递归是编写遍历代码的最自然方式。然而,除非你的编译器将尾部递归优化为迭代,否则你的递归实现将比迭代算法慢,并且会在足够深的树上因堆栈溢出而死亡。 一些快速的Python来说明区别:
|
![]() |
2
8
|
![]() |
3
1
|
![]() |
4
1
实际上,您应该使用队列进行广度优先搜索,使用堆栈进行深度优先搜索, 并从while循环运行算法。 遍历时执行操作,可能会导致堆栈溢出,但现在你会 需要非常努力才能看到一个。 只需在旁边添加一个哈希值,以跟踪已访问的节点,以防没有访问 一棵树,但却是一个连接良好的图。 |
![]() |
5
-1
使用递归方法,因为实际上可能会出现堆栈溢出错误,毕竟这是stackoverflow.com。 |
![]() |
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 9 月前 |
![]() |
Alisa Petrova · 在有向图中更改一对顶点以创建循环 9 月前 |
![]() |
Pengcheng · 这个简单的递归函数的输出是什么?你能详细解释一下吗? 10 月前 |
![]() |
b39b332d · 使用C++标准库实现高效间隔存储 1 年前 |
![]() |
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 1 年前 |
![]() |
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 1 年前 |