Leecode 0515. Find Largest Value in Each Tree Row
515. Find Largest Value in Each Tree Row
Given the root
of a binary tree, return an array of the largest value in each row of the tree (0-indexed).
Example 1:
1 | Input: root = [1,3,2,5,3,null,9] |
Example 2:
1 | Input: root = [1,2,3] |
题目大意
给定一棵二叉树的根节点 root
,返回一个数组,其中每个元素是二叉树对应行(从 0 开始索引)中的最大值。
例如:
- 输入二叉树
[1,3,2,5,3,null,9]
,第 0 行最大值为 1,第 1 行最大值为 3,第 2 行最大值为 9,因此返回[1,3,9]
。
解题思路
要找到每一行的最大值,核心是按层遍历二叉树,并在遍历过程中记录每层的最大值。具体步骤如下:
- 层序遍历初始化:若根节点为空,直接返回空数组;否则将根节点入队。
- 逐层处理节点:
- 记录当前队列大小(即当前层的节点总数
levelSize
),用于控制只处理当前层的节点。 - 初始化当前层的最大值
maxVal
(可设为当前层第一个节点的值,再与其他节点比较)。 - 遍历当前层的所有节点:
- 取出队首节点,比较其值与
maxVal
,更新maxVal
为两者中的较大值。 - 将节点的左、右子节点入队(为下一层遍历做准备)。
- 取出队首节点,比较其值与
- 当前层处理完毕后,将
maxVal
加入结果集。
- 记录当前队列大小(即当前层的节点总数
- 遍历结束:所有层处理完成后,返回结果集。
代码实现
1 | /** |
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.