解题思路
递归

List<List<Integer>> levels = new ArrayList<List<Integer>>();public void helper(TreeNode node, int level) {if (levels.size() == level)levels.add(new ArrayList<Integer>());// 填充当前层levels.get(level).add(node.val);// 处理下一层if (node.left != null)helper(node.left, level + 1);if (node.right != null)helper(node.right, level + 1);}public List<List<Integer>> levelOrder(TreeNode root) {if (root == null)return levels;helper(root, 0);return levels;}
迭代

public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> levels = new ArrayList<List<Integer>>();if (root == null) return levels;Queue<TreeNode> queue = new LinkedList<TreeNode>();queue.add(root);int level = 0;while ( !queue.isEmpty() ) {// start the current levellevels.add(new ArrayList<Integer>());// number of elements in the current levelint level_length = queue.size();for(int i = 0; i < level_length; ++i) {TreeNode node = queue.remove();// fulfill the current levellevels.get(level).add(node.val);// add child nodes of the current level// in the queue for the next levelif (node.left != null) queue.add(node.left);if (node.right != null) queue.add(node.right);}// go to next levellevel++;}return levels;}
