我遵守了绕过一棵树的代码(预定顺序):
public void traverse(Node node) {
visit(node);
for (Node child : node.getChildren()) {
traverse(child);
}
}
我想要一个一步步跨行。 类似 < code> Iterator code> 的东西, 这样一个客户端( 打电话者) 可以成为另一个应用程序, 就可以控制跨行 。 (例如: 在 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);
}
}
如您在代码中看到的,我将访问所有节点(在集合节点中),以收集并将它们列入预先订购格式的清单。
我想知道,如果没有这种额外的(集合节点)迭代,是否有任何解决办法?
Regards, Mohammad