当前位置:网站首页>LeetCode·每日一题·1161.最大层内元素和·层次遍历
LeetCode·每日一题·1161.最大层内元素和·层次遍历
2022-07-31 13:22:00 【小迅想变强】
链接:https://leetcode.cn/problems/maximum-level-sum-of-a-binary-tree/solution/by-xun-ge-v-k02i/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
题目

示例

思路
解题思路
对于树的相关问题使用递归基本上都可以解决
对于本题我们需要寻找层内元素之和 最大 的那几层(可能只有一层)的层号,并返回其中 最小 的那个。
那么首先需要对每一层的元素进行遍历求和,对于树的每一层元素遍历,无疑使用层次遍历最为方便,对于层次遍历可以用递归也可以使用迭代,对于层次遍历迭代更方便理解,这里使用迭代实现层次遍历
具体实现
树的层次遍历需要使用队列保存每一层的元素,我们遍历树,将树的每一层元素存入队列,然后按每层弹出队列中元素,同时保存每层元素的和,并且判断弹出元素是否存在子节点,存在子节点时存入队列,每层弹出后保存最大值和对应层数
代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int maxLevelSum(struct TreeNode* root){
struct TreeNode * ans[10000];//队列
int left = 0;
int right = 0;
ans[right++] = root;//头结点入队
int max = INT_MIN;//最大值层和
int storey = 1;//当前位于第几层
int s = -1;//最大值位于第几层
while(left < right)//层次遍历
{
int sum = 0;//当前层元素和
int r = right;
while(left < r)//按层弹出元素
{
sum += ans[left]->val;
if(ans[left]->left)//弹出元素判断是否存在子元素
{
ans[right++] = ans[left]->left;
}
if(ans[left]->right)
{
ans[right++] = ans[left]->right;
}
left++;
}
if(sum > max)//保存最大值层
{
max = sum;
s = storey;
}
storey++;
}
return s;
}
作者:xun-ge-v
链接:https://leetcode.cn/problems/maximum-level-sum-of-a-binary-tree/solution/by-xun-ge-v-k02i/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。时间空间复杂度

边栏推荐
- Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
- NameNode (NN) and SecondaryNameNode (2NN) working mechanism
- [Niu Ke brush questions - SQL big factory interview questions] NO3. E-commerce scene (some east mall)
- Controller层代码这么写,简洁又优雅!
- csdn发文助手问题
- ICML2022 | 面向自监督图表示学习的全粒度自语义传播
- 如何使用StarUML画类图[通俗易懂]
- selenium被反爬了怎么办?
- C#使用NumericUpDown控件
- C# control StatusStrip use
猜你喜欢

C# control ToolStripProgressBar usage

Centos7 install mysql5.7 steps (graphical version)

ERROR 1819 (HY000) Your password does not satisfy the current policy requirements

golang-gin-优雅重启

CLion用于STM32开发

ECCV 2022 | 机器人的交互感知与物体操作

golang-gin - graceful restart

Optimization of five data submission methods

C#获得网卡信息 NetworkInterface IPInterfaceProperties

C#控件CheckBox的使用
随机推荐
报错:npm ERR code EPERM
C#控件 ToolStripProgressBar 用法
CentOS7 installation MySQL graphic detailed tutorial
ICML2022 | Fully Granular Self-Semantic Propagation for Self-Supervised Graph Representation Learning
Ali on three sides: MQ message loss, repetition, backlog problem, how to solve?
Install the latest pytorch gpu version
4.爬虫之Scrapy框架2数据解析&配置参数&数据持久化&提高Scrapy效率
JSP response对象简介说明
NameNode (NN) and SecondaryNameNode (2NN) working mechanism
Hard disk partition, expand disk C, no reshipment system, not heavy D dish of software full tutorial.
C#Assembly的使用
PartImageNet物体部件分割(Semantic Part Segmentation)数据集介绍
如何使用StarUML画类图[通俗易懂]
Spark学习:为Spark Sql添加自定义优化规则
golang-gin-优雅重启
ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost3306‘ (10061)解决办法
P5019 [NOIP2018 提高组] 铺设道路
Batch大小不一定是2的n次幂!ML资深学者最新结论
代码随想录笔记_哈希_454四数相加II
Introduction to the PartImageNet Semantic Part Segmentation dataset