我正在用 C++ 实现一个树结构,它有一个像这样的节点类:
class Node {
protected:
// relations
Node *_parent;
std::vector<Node*> _children;
public:
// some example method
void someMethod(Node *node) {
// do something with *node
for (int i = 0; i < node->_children; i++) {
_children[i]->myFunction;
}
}
}
现在,要在树中的节点上工作,我正在实现递归函数,就像someMethod
我的示例中一样。
它可以工作,但我最终为每个在我的树上工作的新函数一遍又一遍地编写相同的递归代码。
有没有像在普通数组上那样迭代树结构的通用方法?一些返回下一个对象的方法,直到我完成整个分支。
编辑:
感谢迄今为止发表评论的所有人,在您的帮助下,我可以缩小问题的范围。根据我的理解(我是 C++ 新手),我需要一个迭代器类来封装用于遍历我的树的代码。
访问所有树成员应该很简单:
for (Node<Node*>::iterator it = _node.begin(); it != _node.end(); ++it) {
Node *node = *it;
// do something with *node
}
现在的问题是:
如何实现这样的迭代器?