从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
在获取子节点之前的队列大小就是当前层的节点个数
import java.util.*;
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
ArrayList > Print(TreeNode pRoot) {
ArrayList> layers = new ArrayList>();
if (pRoot == null)
return layers;
Deque queue = new LinkedList();
queue.offer(pRoot);
while (!queue.isEmpty()) {
ArrayList layer = new ArrayList();
int cur = 0, size = queue.size();
while (cur < size) {
TreeNode node = queue.poll();
layer.add(node.val);
if (node.left != null) {
queue.offer(node.left);
}
if (node.right != null) {
queue.offer(node.right);
}
cur ++;
}
layers.add(layer);
}
return layers;
}
}
https://www.cnblogs.com/wxisme/category/672272.html