题目
- 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
示例
- 示例1
- 给定二叉树: [3,9,20,null,null,15,7]
3
/ \
9 20
/ \
15 7
- 返回:
[
[3],
[9,20],
[15,7]
]
代码
- 递归层次遍历
class Solution {
List<List<Integer>> list = new ArrayList<>();
public List<List<Integer>> levelOrder(TreeNode root) {
dfs(root,0);
return list;
}
public void dfs(TreeNode root,int level){
if(root == null) return;
if(list.size() <= level) // 深度小于等于本层深度
list.add(new ArrayList());
list.get(level).add(root.val);
dfs(root.left,level+1);
dfs(root.right,level+1);
}
}
代码分析
: if(list.size() <= level)
深度小于等于本层深度才添加进去,避免把最后一层为空的时候也添加进去了。
- 其他方法