用一个size记录每一层要弹出多少个, 我知道每一轮我要搞几次
public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> ans = new ArrayList<>();if (root == null) {return ans;}Queue<TreeNode> queue = new LinkedList<>();TreeNode node = root;queue.offer(node);int size = 0;while (!queue.isEmpty()) {size = queue.size();List<Integer> curLevel = new ArrayList<>();for (int i = 0; i < size; i++) {node = queue.poll();curLevel.add(node.val);if (node.left != null) {queue.add(node.left);}if (node.right != null) {queue.add(node.right);}}ans.add(curLevel);}return ans;}public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val = val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val = val;this.left = left;this.right = right;}}
