我有以下代码来遍历一棵树(预购):
public void traverse(Node node) {
visit(node);
for (Node child : node.getChildren()) {
traverse(child);
}
}
我想要一步一步的遍历。类似 an 的东西Iterator
,这样可以成为另一个应用程序的客户端(调用者)可以控制遍历。(例如:在 UI 中我们有一个“下一步”按钮,通过单击此按钮,我们必须访问下一个节点)
我目前的解决方案是这样的:
List<Node> nodes = new ArrayList<Node>();
collectNodes(root, nodes);
Iterator<Node> it = nodes.iterator();
// do my job.
...
public void collectNodes(Node node, List<Node> nodes) {
nodes.add(node);
for (Node child : node.getChildren()) {
collectNodes(child, nodes);
}
}
正如您在代码中看到的,我正在访问所有节点(在 collectNodes 中)以收集它们并将它们以预购格式放入列表中。
我想知道是否有没有这个额外的(collectNodes)迭代的解决方案?
问候,穆罕默德