原题地址
剑指 Offer 32 - II. 从上到下打印二叉树 II
题目描述
题目思路
- 由上到下,自左向右遍历,即为二叉树的广度优先搜索(BFS),可以由队列(先进先出)来实现。
- 每层打印一行,即将本层全部节点打印到一行,并将下一层全部节点加入队列,以此类推,即可分为多行打印。
代码实现
广度优先搜索(BFS)
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
if(root == null) return new ArrayList(){};
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
List<List<Integer>> res = new ArrayList<>();
while(!queue.isEmpty()){
List<Integer> temp = new ArrayList<>();
for(int i = queue.size(); i > 0; i--){
//由高位向低位遍历队列,防止队列长度变化影响
TreeNode node = queue.poll();
temp.add(node.val);
//将下层节点入队
if(node.left != null) queue.add(node.left);
if(node.right != null) queue.add(node.right);
}
res.add(temp);
}
return res;
}
}