我需要以不同的顺序处理一棵树,比如说 BFS 和 DFS。通过使用队列或堆栈,两者都很容易,但是,我在 Java 中缺少一个适当的接口,允许执行类似的操作
QueueOrStack<N> pending = ...
while (!pending.isEmpty()) {
N node = pending.poll(); // <----- this is the problem
pending.addAll(node.children());
process(node);
}
没有真正的问题,我可以将 an 封装ArrayList
到实现Queue
1的东西中,但是我敢打赌我忽略了 Java Collection Framework 中的一些东西。还是真的失踪了?
__
1或使用带有 a 的最新比较器PriorityQueue
,这可能是一个愚蠢的想法