没有递归的复合模式迭代器

时间:2009-02-06 14:33:20

标签: recursion iterator design-patterns composite

有没有人编写或想过为复合(树)结构编写迭代器而不使用递归? 如果是这样,你能分享你的想法吗? THKS

编辑:我正在考虑使用Java语言。

2 个答案:

答案 0 :(得分:1)

在没有递归的情况下遍历树很简单。假设一个二叉树,每个节点可能有三个对其他节点的引用。左孩子,右孩子和父母。 因此,假设深度优先从左到右的迭代顺序,您遵循while-lop中的左子引用(伪代码while current.left-child != null, current = current.left-child) 如果没有留下孩子,你会尝试合适的孩子。如果没有正确的孩子,你会上去,直到找到一个右孩(while current.right-child == null, current = current.parent

你没有指定一种语言,但是因为你想避免递归,我会假设它是某种必要的语言,然后上面应该是可能的。

简而言之,您的迭代器必须保存对当前节点的引用,以及有关它行进方式的一些信息。

答案 1 :(得分:0)

你可能从这个问题得到一些灵感: Post order traversal of binary tree without recursion 您需要的只是将算法扩展到非二叉树。