题目
解题思路
- 利用Map以层级作为key进行初始数据存储,最后再遍历Map存储结果到List中;
- 添加当前节点到当前层级,通过递归传递层级到下一层即当前节点的左右子树;
代码展示
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);
}
}