【发布时间】:2009-11-15 23:10:16
【问题描述】:
在给定以下约束的情况下,是否有一种高效、实用的方法来遍历二叉树:
- 您无法控制调用堆栈,因此不能使用递归。所有状态都必须存在于迭代器/范围对象内,而不是堆栈上。
- 不得在算法中的任何地方使用堆分配。
- 树可能是不可变的,因此您无法在其中存储迭代状态。
- 您没有父指针。
- 迭代器/范围结构不能太大,以至于传递给函数是完全不合理的。
编辑:
- 这不是家庭作业。实际上,我正在尝试设计一个库,该库在第二个堆栈上构建二叉树,并对堆分配(或缺乏堆分配)做出很多保证。
- 树木是平衡的。 (它们是 AVL 树。)
【问题讨论】:
-
这是一个挑战,还是只是家庭作业?
标签: algorithm data-structures iterator range binary-tree