我有下面的代码遍历树(预购),但步骤:遍历树 - 分步
public void traverse(Node node) {
visit(node);
for (Node child : node.getChildren()) {
traverse(child);
}
}
我想有一个一步一步的遍历。例如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)迭代的解决方案?
的问候,穆罕默德
请将内容添加到答案本身。如果链接断开,仅链接答案就不好。 – Quentin