丹徒网站建设报价,公司响应式网站建设平台,高邑做网站,erp系统与网站对接长沙目录
力扣515. 在每个树行中找最大值
解析代码 力扣515. 在每个树行中找最大值
515. 在每个树行中找最大值
难度 中等
给定一棵二叉树的根节点 root #xff0c;请找出该二叉树中每一层的最大值。
示例1#xff1a; 输入: root [1,3,2,5,3,null,9]
输出: [1,3,9]示例2…目录
力扣515. 在每个树行中找最大值
解析代码 力扣515. 在每个树行中找最大值
515. 在每个树行中找最大值
难度 中等
给定一棵二叉树的根节点 root 请找出该二叉树中每一层的最大值。
示例1 输入: root [1,3,2,5,3,null,9]
输出: [1,3,9]示例2
输入: root [1,2,3]
输出: [1,3]提示
二叉树的节点个数的范围是 [0,10^4]-2^31 Node.val 2^31 - 1
/*** 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:vectorint largestValues(TreeNode* root) {}
}; 解析代码 思路层序遍历过程中在执行让下一层节点入队的时候我们是可以在循环中统计出当前层结点的最大值的。 因此可以在 bfs 的过程中统计出每一层结点的最大值。
/*** 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:vectorint largestValues(TreeNode* root) {vectorint ret;if(root nullptr)return ret;queueTreeNode* q;q.push(root);while(!q.empty()){int sz q.size(), maxVal INT_MIN;while(sz--){TreeNode* t q.front();maxVal max(maxVal, t-val);q.pop();if(t-left)q.push(t-left);if(t-right)q.push(t-right);}ret.push_back(maxVal);}return ret;}
};