我需要以不同的顺序处理树,比方说BFS和DFS。使用队列或堆栈都很容易,但是,我在Java中缺少适当的接口,允许执行类似
的操作QueueOrStack<N> pending = ...
while (!pending.isEmpty()) {
N node = pending.poll(); // <----- this is the problem
pending.addAll(node.children());
process(node);
}
没有真正的问题,我可以将ArrayList
封装到实现Queue
1 的内容中,但我敢打赌,我忽略了Java Collection Framework中的某些内容。还是真的不见了?
__
1 或使用带有PriorityQueue
的最新第一个比较器,这可能是一个愚蠢的想法
答案 0 :(得分:5)
有这样的结构。
它被称为ArrayDeque
- &gt; http://docs.oracle.com/javase/6/docs/api/java/util/ArrayDeque.html