题目
解答
class Solution {List<List<Integer>> nodeLevels = new ArrayList<>();public List<List<Integer>> levelOrder(TreeNode root) {levelOrder(root, 0);return nodeLevels;}public void levelOrder(TreeNode root, int k) {if (root == null) {return;}if (nodeLevels.size() <= k) {nodeLevels.add(new ArrayList<>());}nodeLevels.get(k).add(root.val);levelOrder(root.left, k + 1);levelOrder(root.right, k + 1);}}
要点
单一的层序遍历可以使用DFS实现。
题目要求将同一层的成员聚合在一起输出,因此在遍历时,需要记录各节点的高度,这是本题目的难点。
当前的实现不是很优雅,暂时没有想到更好的方法,后续时间充裕的时候,再设计更好的解决方案。