【发布时间】:2010-11-03 15:50:30
【问题描述】:
谁能指出一种在不使用递归的情况下获取二叉树(不是平衡树或 BST)中节点深度的方法?理想情况下使用 Java/C/C#
节点表示为:
class Node
{
Node Left;
Node Right;
string Value;
int Depth;
}
我的第一个想法是使用带有 FIFO 列表的 Level Order,但我在检测级别何时发生变化时遇到了困难,尤其是对于不平衡的树。
【问题讨论】:
-
递归必须是最简单的方法,你想避免它的原因是什么?
-
深度场是距根的距离,还是距最远的孩子的距离?
-
Kirschstein:有理由避免在资源有限的平台(例如嵌入式系统)上进行递归调用。通常需要具有恒定内存占用的非递归算法。
-
@Binary Worrier:啊,我明白了。谢谢
-
我在 SO 上阅读的递归帖子给出的建议是递归应该用于最多 10 个级别。一棵完整树中的 10 个级别是 1024 个项目,所以我很好奇你会如何做更多(我假设其他基于二叉树的树会使用,尽管总是平衡的)
标签: recursion binary-tree non-recursive