22从上往下打印二叉树

题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印

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

posted @ 2017-12-02 10:03  乐乐章  阅读(291)  评论(0编辑  收藏  举报