题目
给你二叉树的根节点
root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
解题思路
- 利用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);}
}