我想创建一个二叉树迭代器,以便能够使用基于范围的for循环。我明白我应该首先实现begin()和end()函数。
Begin应该指向根节点。然而,根据规定,end()函数返回“最后一个有效元素之后的元素”。这个元素(节点)是什么?指向某个“无效”的位置不合法吗?
另一件事是operator++。在树中返回“下一个”元素的最佳方法是什么?我只需要一些开始编程的建议。
我想扩展/增强我的问题。如果我想遍历具有任意分支度的树怎么办?让每个节点都有一个子节点的向量,并让begin()指向“真正”的根。我可能要在迭代器类中实现一个队列(用于广度优先),以存储指向节点的unique_ptr,对吗?然后,当队列为空时,我会知道已经遍历完所有节点,因此在调用oprator++()时应返回TreeIterator(nullptr)。这有意义吗?我希望它尽可能简单,只进行前向迭代。
*还是应该创建一个新线程?
end()
迭代器可能最终会成为一个在树中并非实际节点的特殊值。 - Lily Ballard