【发布时间】:2013-02-10 14:13:07
【问题描述】:
我正在用 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
}
现在的问题是:
如何实现这样的迭代器?
【问题讨论】:
-
你如何返回
largestSoFar,究竟是什么问题? -
你可能也想看看这个:stackoverflow.com/questions/8961605/…
-
@ogzd 我编辑了我的问题,希望现在更清楚了。
-
@M3taSpl0it:我的树不是二叉树,每个节点可能有n个孩子。