1.如果是 ArrayList<TreeNode> queue = new ArrayList<TreeNode>(); add(),addAll(),add(index,数据),addAll(index,数据) remove(对象),remove(下标),removeAll() 2.如果是 List<TreeNode> queue = new ArrayList<TreeNode>(); add(),addAll(),add(index,数据),addAll(index,数据) remove(对象),remove(下标),removeAll() 3.如果是 List<TreeNode> queue = new LinkedList<TreeNode>(); add(),addAll(),add(index,数据),addAll(index,数据) remove(对象),remove(下标),removeAll() 还是不要用前三种,没有poll(),没有last,first,没有offer(),没有remove(无参)
4. 如果是 LinkedList<TreeNode> queue = new LinkedList<TreeNode>(); add(),addAll(),add(index,数据),addAll(index,数据) addLast(),addFirst() offer(),offerLast(),offerFirst() remove(),remove(对象),removeAll(),remove(下标) removeFirst(),removeLast() poll() 5. 如果是 Deque<TreeNode> queue = new LinkedList<TreeNode>(); add(),addAll() addLast(),addFirst(), offer(),offerLast(),offerFirst() remove(),remove(对象),removeAll() removeFirst(),removeLast() poll() 6. 如果是 Queue<TreeNode> queue = new LinkedList<TreeNode>(); add(),addAll() offer() remove(),remove(对象),removeAll() poll()
LinkedList<TreeNode> queue 的方法最全 Deque<TreeNode> queue 相比 LinkedList 少了add和remove的以索引操作方式 Queue<TreeNode> queue 相比 Deque 少了add,offer和remove的first头插和last尾插的方式 总结:LinkedList最全;Deque少了索引;Queue少了索引、头尾插 前三种少了 头尾插、offer()、remove(空参)和poll() 索引选用:前三种和LinkedList 头尾插:LinkedList和Deque 队列的操作(remove(空参), poll(), offer()):LinkedList,Deque,Queue
7. 队列非空:queue.size() > 0 和 !queue.isEmpty() 和 queue.size() != 0都可以