当前位置:网站首页>1161. Maximum Level Sum of a Binary Tree
1161. Maximum Level Sum of a Binary Tree
2022-08-04 06:55:00 【SUNNY_CHANGQI】
The description of the problem
Given the root of a binary tree, the level of its roots is 1, the level of its children is 2, and so on.
Return the smallest level x such that the sum of all the value of nodes at level x is maximal.
The intuition for this problem
- traverse the element in the binary tree by levels.
- log the max sum value and its index level
The codes
#include <iostream>
#include <queue>
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode() : val(0), left(nullptr), right(nullptr) {
}
TreeNode(int x) : val(x), left(NULL), right(NULL) {
}
TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {
}
};
class Solution {
public:
int maxLevelSum(TreeNode* root) {
if(!root) return 0;
int target_level = 0;
int max_sum = INT_MIN;
int level = 0;
std::queue<TreeNode*> q;
q.push(root);
while(!q.empty()) {
++level;
int n = q.size();
int level_sum = 0;
for (int i = 0; i < n; i++) {
TreeNode* node = q.front();
q.pop();
level_sum += node->val;
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
}
if (level_sum > max_sum) {
max_sum = level_sum;
target_level = level;
}
}
return target_level;
}
};
int main() {
Solution s;
TreeNode* root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->left = new TreeNode(4);
root->left->right = new TreeNode(5);
root->right->left = new TreeNode(6);
root->right->right = new TreeNode(7);
std::cout << s.maxLevelSum(root) << std::endl;
return 0;
}
the corresponding results

The codes using dfs
/** * 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:
int maxLevelSum(TreeNode* root) {
if(!root) return 0;
int target_level = 0;
int max_sum = INT_MIN;
int level = 0;
std::queue<TreeNode*> q;
q.push(root);
while(!q.empty()) {
++level;
int n = q.size();
int level_sum = 0;
for (int i = 0; i < n; i++) {
TreeNode* node = q.front();
q.pop();
level_sum += node->val;
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
}
if (level_sum > max_sum) {
max_sum = level_sum;
target_level = level;
}
}
return target_level;
}
};
The corresponding results

边栏推荐
- LeetCode(剑指 Offer)- 18. 删除链表的节点
- matlab封闭曲线拟合 (针对一些列离散点)
- unity webgl报 Uncaught SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON
- LAN技术-3iStack
- 串口监听 - 软件方案
- The national vocational skills contest competition of network security emergency response
- 有人试过用NPGsql驱动连接openGauss开发应用的吗?
- 使用腾讯云发送短信 ---- 手把手教你搞定所有步骤
- 两日总结七
- New Questions in Module B of Secondary Vocational Network Security Competition
猜你喜欢
随机推荐
Error EPERM operation not permitted, mkdir ‘Dsoftwarenodejsnode_cache_cacach两种解决办法
Error ER_NOT_SUPPORTED_AUTH_MODE Client does not support authentication protocol requested by serv
mysql基础(4)
两日总结四
MySQL复制表结构、表数据的方法
经典新诗九首
两日总结七
开发小技巧 navicate如何点击单元格显示全部的文本内容或通过图像查看内容
npm包发布与迭代
【论文笔记】—低照度图像增强—Supervised—RetinexNet—2018-BMVC
Centos通过Docker搭建MySQL的PXC集群
中断和异常的处理与抢占式多任务
分布式计算MapReduce | Spark实验
ubuntu18.04安装redis教程
Provide 和 Inject 的用法
设置el-table自动向下滑动(不多解释,直接代码实现)
异常值 识别与处理方法
手把手教你Charles抓包工具使用
MySQL 8.0.29 详细安装(windows zip版)
Promise.all 使用方法









