剑指 Offer 32 - II. 从上到下打印二叉树 II

 

 

class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        List<List<Integer>> result=new ArrayList<>();//这里注意
        if(root==null)
        {return result;}
        Queue<TreeNode> queue=new LinkedList<>();
        queue.add(root);
        while(queue.size()!=0)
        {
            List<Integer> listLevel=new ArrayList<>();
            int count=queue.size();
            for(int i=0;i<count;i++)
            {
                TreeNode node=queue.poll();
                listLevel.add(node.val);
                if(node.left!=null)
                {queue.add(node.left);}
                if(node.right!=null)
                {queue.add(node.right);}
            }
            result.add(listLevel);
        }
        return result;

    }
}

 

这题之前做过,思路也都有了,但仍然在做的过程中发现了一些问题:

  1. List<List<Integer>>的new
  2. 空树问题
  3. 用错了for(int i=0;i<queue.size();i++)

1.List<List<Integer>>的new

一开始写成了

List<List<Integer>> result=new ArrayList<ArrayList<Integer>>();

泛型问题,应该写成:

List<List<Integer>> result= new ArrayList<List<Integer>>();
//或者
List<List<Integer>> result=new ArrayList<>();

 

2.空树问题

老问题了,不知道这次为什么没注意到

 

3.for循环

傻了,一开始写成了for(int i=0;i<queue.size();i++)

但其实i<queue.size()一直在变,要注意这种for循环中变量的问题

 

posted @ 2021-01-15 16:48  将来的事  阅读(87)  评论(0)    收藏  举报