public static ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) { LinkedList<TreeNode> queue = new LinkedList<>(); // 每层往后存,从头取 ArrayList<ArrayList<Integer>> ret = new ArrayList<ArrayList<Integer>>(); if (root == null) { return ret; } queue.offer(root); while (queue.peek()!=null){ ArrayList<Integer> level = new ArrayList<Integer>(); int currentLevelSize = queue.size(); // 每层遍历先获取大小,只从头取固定大小 for (int i = 1; i <= currentLevelSize; ++i) { TreeNode node = queue.poll(); // 从头取每层固定个数 level.add(node.val); System.out.println(node.val); if (node.left != null) { queue.offer(node.left); // 放入后面 } if (node.right != null) { queue.offer(node.right); // 放入后面 } } ret.add(level); } return ret; }