《剑指Offer》Java刷题 NO.60 把二叉树打印成多行(二叉树,队列,BFS层序遍历)
传送门:《剑指Offer刷题总目录》
时间:2020-07-16
题目:
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
思路:
前面有道之字形打印的题:NO.59 按之字形顺序打印二叉树(二叉树,BFS,queue&stack)
这道就是完全的BFS了,套用模板利用队列即可。
Java代码:
public ArrayList<ArrayList<Integer>> printBFS(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> result = new ArrayList<>();
if (pRoot == null) {
return result;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(pRoot);
while (!queue.isEmpty()) {
int length = queue.size();
ArrayList<Integer> temp = new ArrayList<>();
while (length-- > 0) {
TreeNode cur = queue.poll();
temp.add(cur.val);
if (cur.left != null) {
queue.offer(cur.left);
}
if (cur.right != null) {
queue.offer(cur.right);
}
}
result.add(temp);
}
return result;
}