给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。

输入: root = [1,3,2,5,3,null,9]
输出: [1,3,9]
输入: root = [1,2,3]
输出: [1,3]
二叉树的节点个数的范围是 [0,104]
-231 <= Node.val <= 231 - 1
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/find-largest-value-in-each-tree-row
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
利用层次遍历,对每一层找到一个最大值并返回即可。
- /**
- * Definition for a binary tree node.
- * struct TreeNode {
- * int val;
- * TreeNode *left;
- * TreeNode *right;
- * TreeNode() : val(0), left(nullptr), right(nullptr) {}
- * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
- * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
- * };
- */
- class Solution {
- public:
- vector<int> largestValues(TreeNode* root) {
- vector<int> res;
- if (root == nullptr) return res;
- queue<TreeNode*> q;
- q.push(root);
- while (!q.empty())
- {
- int size = q.size();
- int maxVal = INT_MIN; //要求最大值,所以初始化为最小
- while (size -- )
- {
- TreeNode* t = q.front();
- q.pop();
- if (t->left) q.push(t->left);
- if (t->right) q.push(t->right);
-
- maxVal = max(maxVal, t->val); //更新最大值
- }
-
- res.push_back(maxVal); //当前层已遍历完毕,存入当前层最大值
- }
- return res;
- }
- };