题目

解题思路

  1. 利用Map以层级作为key进行初始数据存储,最后再遍历Map存储结果到List中;
  2. 添加当前节点到当前层级,通过递归传递层级到下一层即当前节点的左右子树;

代码展示

class Solution {
    private Map<Integer,List<Integer>> levelMap = new TreeMap<>();
    public List<List<Integer>> levelOrder(TreeNode root) {
        getLevel( root, 0);
        List<List<Integer>> ans = new ArrayList<>();
        for (List<Integer> list : levelMap.values()){
            ans.add(list);
        }
        return ans;
    }
    /**
     * 获取当前层的值
     * @param root  当前层的节点
     * @param level 当前层级
     */
    private void getLevel( TreeNode root, int level){
        if(root == null){
            return;
        }
        List<Integer> list = levelMap.getOrDefault( level, new ArrayList<>());
        list.add(root.val);
        levelMap.put( level, list);
        level++;
        getLevel( root.left, level);
        getLevel( root.right, level);
    }
}
12-07 13:53