题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印
public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> res = new ArrayList<Integer>(); ***_ _******_//Queue<TreeNode> que = new Queue<TreeNode>(); //错误1 //Queue<TreeNode> que = new ArrayList<TreeNode>();//错误2_*** Queue<TreeNode> que = new LinkedList<TreeNode>(); if(root==null) return res; que.add(root); while(!que.isEmpty()){ root = que.poll(); if(root.left != null) que.add(root.left); if(root.right != null) que.add(root.right); res.add(root.val); } return res; } }
错误1 :Queue is abstract; cannot be instantiated
queue 是个接口,无法被实例化。
错误2: ArrayList cannot be converted to Queue
ArrayList 没有实现queue的接口。
Why ArrayList doesn't implements Queue?
简单来说就是
。queue要求可以在队列的头add 新元素,并且在队列的尾可以remove元素。ArrayList 是实际上是一个动态数组,
对于一个数组,在头部增加元素的操作需要的时间复杂度是O(n),因为需要reindex