如果有将孩子入队,此时队列大小q.size会改变,但是size还是上一层的大小,直到size==0后,循环结束size=新的q.size
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public List<List<Integer>> levelOrder(TreeNode root) { // if(root==null) return new ArrayList<List<Integer>>(null); List<List<Integer>> result=new ArrayList<List<Integer>>(); if(root==null) return result; Queue<TreeNode> q=new LinkedList(); q.add(root); while(!q.isEmpty()){ List<Integer> levelList=new ArrayList(); int size=q.size();//******这里是保证每层节点为一组添加到levelList在添加到result中 for(int i=0;i<size;i++){ TreeNode node=q.poll(); levelList.add(node.val); if(node.left!=null) q.add(node.left);//将左右孩子添加到队列中,q.size会改变,但for循环中的size仍为上一层时的大小 if(node.right!=null) q.add(node.right); } result.add(levelList); } return result; } }