题目来源:
题目描述:
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
代码如下:
public class Solution {
ArrayList<ArrayList<Integer>> list = new ArrayList<>();
ArrayList<ArrayList<Integer>> Print(TreeNode root) {
levelOrder(0, root);
return list;
}
private void levelOrder(int level, TreeNode root) {
if (root == null) {
return;
}
//当当前遍历的层数大于size时,说明该层的集合还没被new
if (list.size() == level) {
list.add(new ArrayList<>());
}
list.get(level).add(root.val);
levelOrder(level + 1, root.left);
levelOrder(level + 1, root.right);
}
}