32.2 把二叉树打印成多行
题目描述
从上到下按层打印二叉树,同一层的节点从左到右打印,每一层输出为一行。
解题思路
与 32.1 一样按层遍历:开始处理一层时,队列中的节点数 cnt 就是这一层的节点数,取出 cnt 个节点放进同一个 list,就得到这一层。
public List<List<Integer>> decorateRecord(TreeNode root) {
List<List<Integer>> ret = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
while (!queue.isEmpty()) {
List<Integer> list = new ArrayList<>();
int cnt = queue.size();
while (cnt-- > 0) {
TreeNode node = queue.poll();
if (node == null)
continue;
list.add(node.val);
queue.add(node.left);
queue.add(node.right);
}
if (list.size() != 0)
ret.add(list);
}
return ret;
}