|
|
1
19
如果你正在进行深度优先搜索,那么递归是编写遍历代码的最自然方式。然而,除非你的编译器将尾部递归优化为迭代,否则你的递归实现将比迭代算法慢,并且会在足够深的树上因堆栈溢出而死亡。 一些快速的Python来说明区别:
|
|
|
2
8
|
|
|
3
1
|
|
|
4
1
实际上,您应该使用队列进行广度优先搜索,使用堆栈进行深度优先搜索, 并从while循环运行算法。 遍历时执行操作,可能会导致堆栈溢出,但现在你会 需要非常努力才能看到一个。 只需在旁边添加一个哈希值,以跟踪已访问的节点,以防没有访问 一棵树,但却是一个连接良好的图。 |
|
5
-1
使用递归方法,因为实际上可能会出现堆栈溢出错误,毕竟这是stackoverflow.com。 |
|
|
bb ef · 如何使用递归从列表中删除某些内容?python 8 年前 |
|
|
Adam Morad · 方案更改树值 8 年前 |
|
johnny 5 · 角度将ViewChild绑定到类中的属性 8 年前 |
|
|
user2467011 · 为什么给定的二叉树是用空节点构造的? 8 年前 |