【发布时间】:2014-08-11 16:29:41
【问题描述】:
我正在研究一个算法问题。我需要预先遍历一棵有 30000 个节点的树。
通过我的实验,我发现当递归级别大于 10000 时,会导致堆栈溢出。我们知道一般树的前序遍历的非递归版本并不那么容易实现,所以我试图使堆栈大小更大。
由于是在线评委,无法直接配置堆栈大小。我知道有一种方法可以在 C++ 中编写一些#prgram 指令来更改堆栈大小,所以我想在 Scala 中是否存在类似的东西。
【问题讨论】:
-
“我们知道非递归版本的通用树的前序遍历并不那么容易实现,”。这也不是那么难。可能比尝试动态更改堆栈大小更容易!而不是递归,将当前节点(以及您通过子节点的距离的索引,如果超过两个)推送到堆栈上,移动到下一个子节点等,当您处理叶子时,弹出前一个节点/堆栈中的位置
标签: scala stack-overflow