有没有人编写或想过为复合(树)结构编写迭代器而不使用递归? 如果是这样,你能分享你的想法吗? THKS
编辑:我正在考虑使用Java语言。
答案 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 您需要的只是将算法扩展到非二叉树。