[LeetCode]剑指 Offer 32 - I. 从上到下打印二叉树
Posted Spring-_-Bear
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode]剑指 Offer 32 - I. 从上到下打印二叉树相关的知识,希望对你有一定的参考价值。
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:给定二叉树: [3,9,20,null,null,15,7],
3
/ \\
9 20
/ \\
15 7
返回:
[3,9,20,15,7]
提示:
- 节点总数 <= 1000
题解:
算法流程:
- 特例处理: 当树的根节点为空,则直接返回空列表 [] ;
- 初始化: 打印结果列表 res = [] ,包含根节点的队列 queue = [root] ;
- BFS 循环: 当队列 queue 为空时跳出;
- 出队: 队首元素出队,记为 node;
- 打印: 将 node.val 添加至列表 tmp 尾部;
- 添加子节点: 若 node 的左(右)子节点不为空,则将左(右)子节点加入队列 queue ;
- 返回值: 返回打印结果列表 res 即可。
/**
* 剑指 Offer 32 - I. 从上到下打印二叉树
*/
public int[] levelOrder(TreeNode root)
if (root == null)
return new int[0];
// 树的层次遍历即广度优先遍历 BFS,优先想到队列
List<Integer> res = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty())
TreeNode node = queue.poll();
res.add(node.val);
// 将当前结点的左、右孩子加入到队尾
if (node.left != null)
queue.offer(node.left);
if (node.right != null)
queue.offer(node.right);
int[] result = new int[res.size()];
for (int i = 0; i < result.length; i++)
result[i] = res.get(i);
return result;
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof
以上是关于[LeetCode]剑指 Offer 32 - I. 从上到下打印二叉树的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 剑指Offer 15[位运算] 二进制中1的个数 HERODING的LeetCode之路
LeetCode1482. 制作 m 束花所需的最少天数 / 剑指 Offer 32 . 从上到下打印二叉树I/II/III