一、题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
二、解题思路
使用递归的方法进行前序遍历,传递深度,递归深入一层扩容一层数组。
三、编程实现
import java.util.ArrayList;
public class Solution {
ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> list = new ArrayList<>();
Depth(pRoot, 1, list);
return list;
}
private void Depth(TreeNode root, int depth, ArrayList<ArrayList<Integer>> list) {
if (root == null) {
return;
}
// 当前深度值大于list的容量,则进行扩容
if (depth > list.size()) {
list.add(new ArrayList<Integer>());
}
// 将结点值存入list对应层
list.get(depth - 1).add(root.val);
// 递归对左子结点、右子结点进行操作
Depth(root.left, depth + 1, list);
Depth(root.right, depth + 1, list);
}
}