思路:
1、利用一个队列结构
2、第一层入队
3、第一层出队同时下层入队,依次类推
4、直到最后一层为空,则队列为空,结束

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param root TreeNode类 
     * @return int整型ArrayList<ArrayList<>>
     */
    public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
        //存放最终结果集
        ArrayList<ArrayList<Integer>> result = new  ArrayList<ArrayList<Integer>>();
        if(root==null) return result;
        //需要借助一个队列结构
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        //根结点入队
        queue.offer(root);
        while(!queue.isEmpty()){
            //存放每一层的节点
            ArrayList<Integer> floor = new ArrayList<Integer>();
            //本次要出队的节点数量
            int len = queue.size();
            for(int i=0;i<len;i++){
                //上层节点
                TreeNode temp = queue.poll();
                floor.add(temp.val);
                //下层节点入队
                if(temp.left!=null) queue.offer(temp.left);
                if(temp.right!=null) queue.offer(temp.right);
            }
            //保存当前层结果
            result.add(floor);
        }

        return result;
    }
}