题目
给你二叉树的根节点
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); } }