一、剑指 Offer 32 - I. 从上到下打印二叉树 I
题目链接:剑指 Offer 32 - I. 从上到下打印二叉树 - 力扣(LeetCode) (leetcode-cn.com)
题目要求从上至下打印二叉树,即为二叉树的广度优先搜索BFS。
BFS通常借助队列的先入先出特性来实现。
算法流程:
- 特例处理:当树的根节点为空,则直接返回空列表
[]
; - 初始化:打印结果列表
res = []
,包含根节点的队列queue = [root]
; - BFS循环:当队列queue为空时跳出;
- 出队:队首元素出队,记为node;
- 打印: 将
node.val
添加至列表tmp
尾部; - 添加子节点: 若
node
的左(右)子节点不为空,则将左(右)子节点加入队列queue
- 返回值: 返回打印结果列表
res
即可。
class Solution{
public int[] levelOrder(TreeNode root){
if(root == null)
return new int[0];
Queue<TreeNode> queue = new LinkedList<>();
ArrayList<Integer> res = new ArrayList<>();
queue.add(root);
while(!queue.isEmpty()){
TreeNode node = queue.poll();
res.add(node.val);
if(node.left!=null) queue