【发布时间】:2019-11-08 02:09:24
【问题描述】:
在这种情况下,ArrayDeque 是否应该优先于 LinkedList?
Why is ArrayDeque better than LinkedList。
在我看来,我应该使用 LinkedList 而不是 ArrayDeque,因为有很多 poll 和 offer
在这个算法中进行操作,并且没有随机访问元素。
public ArrayList<ArrayList<Integer>> levelOrder(TreeNode a) {
Queue<TreeNode> q = new LinkedList<>(); // new ArrayDeque<>() ???
q.offer(a);
ArrayList<ArrayList<Integer>> ans = new ArrayList<ArrayList<Integer>>();
while (q.peek() != null){ //returns null if empty
ArrayList<Integer> list = new ArrayList<>();
int n = q.size();
for (int i = 0; i < n; i++){
TreeNode node = q.poll();
list.add(node.val);
if (node.left != null) {
q.offer(node.left);
}
if (node.right != null) {
q.offer(node.right);
}
}
ans.add(list);
}
return ans;
}
【问题讨论】:
-
您添加的链接中的第一个答案很好地解释了为什么应该使用
ArrayDeque,以及何时应该使用LinkedList。我差点把它标记为重复。
标签: java algorithm data-structures queue