首页 > 其他分享 >Leetcode1161. 最大层内元素和

Leetcode1161. 最大层内元素和

时间:2024-06-09 15:03:21浏览次数:28  
标签:node 层内 right TreeNode Leetcode1161 元素 nullptr int left

Every day a Leetcode

题目来源:1161. 最大层内元素和

解法1:层序遍历

每次以「层」为单位进行拓展,统计该层的元素和,维护处理过程中的最大值层数和,以及层深度。

代码:

/*
 * @lc app=leetcode.cn id=1161 lang=cpp
 *
 * [1161] 最大层内元素和
 */

// @lc code=start
/**
 * 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 == nullptr)
            return 0;

        int ans = 0;
        int curLevel = 0;
        int maxLevelSum = INT_MIN;

        queue<TreeNode *> q;
        q.push(root);

        while (!q.empty())
        {
            curLevel++;
            int sz = q.size();
            int levelSum = 0;
            for (int i = 0; i < sz; i++)
            {
                auto node = q.front();
                q.pop();

                levelSum += node->val;

                if (node->left)
                    q.push(node->left);
                if (node->right)
                    q.push(node->right);
            }
            if (levelSum > maxLevelSum)
            {
                maxLevelSum = levelSum;
                ans = curLevel;
            }
        }
        return ans;
    }
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n),其中 n 是二叉树的节点个数。

空间复杂度:O(n),其中 n 是二叉树的节点个数。

标签:node,层内,right,TreeNode,Leetcode1161,元素,nullptr,int,left
From: https://blog.csdn.net/ProgramNovice/article/details/139545373

相关文章

  • 代码随想录第3天 | 链表 203.移除链表元素,707.设计链表,206.反转链表
    题目:203.移除链表元素思路:主要是头节点的删除问题,一种是直接在原链表上后移头节点设置虚拟头结点,指向原链表的头结点,在设置一个cur指针指向当前节点,虚拟头节点初始化后就不移动了,使用cur进行移动不要忘记释放删除节点的内存,自行设置的虚拟头节点也要释放时间复杂度:O(n)空......
  • 代码随想录训练营第三天 | 203.移除链表元素 707.设计链表 206.反转链表
    python定义链表val:数据域,节点存储的元素。next:指针域,指向下一个节点的指针,最后一个节点指向None表示空指针。点击查看代码classListNode:def__init__(self,val,next=None):self.val=valself.next=next203.移除链表元素题目:给你一个链表的......
  • 原生html+js实现两两元素配对,用线条连接两个元素
    效果如下:画线部分借鉴了“https://blogweb.cn/article/1403842582411”此链接文章作者的代码,感谢!直接放出代码:点击查看代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>配对</title><scripttype=&qu......
  • 数组大扫雷行动:JavaScript中的高效移除指定元素
    数组大扫雷行动:JavaScript中的高效移除指定元素基本概念:移除元素,何为?方法一:splice()大法方法二:filter()轻功功能使用角度与技巧案例一:简单移除案例二:条件移除实战分析遇到的坑与对策结语与讨论在JavaScript编程的征途中,数组是我们的常伴,而“移除元素”这一任务,则像......
  • new/类/null/+/PrimitiveValue/valueOf/toString/环境/HTML 脚本元素属性
    newfunctionmyObjCreate(proto){functionF(){}F.prototype=protoreturnnewF();}functionmyNew(F,...args){letobj=myObjCreate(F.prototype)letres=F.call(obj,...args);returntypeofres==='object'&&res!==null?res:obj......
  • 代码随想录算法训练营 第三天 链表 Leetcode203 移除链表元素 Leetcode707 设计链表 L
    Leetcode203移除链表元素 题目链接注意为了使后续节点方式统一 要人为设置链表头节点链表的处理一定要明白如何找前置节点/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(){}*L......
  • 代码随想录算法训练营第一天 | 704. 二分查找 27. 移除元素
    704.二分查找题目:给定一个n个元素有序的(升序)整型数组和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。提示:1.你可以假设nums中的所有元素是不重复的。2.n将在[1,10000]之间。3.nums的每个元素都将在[-9999,9999]之间。解题:思路:二......
  • 深入学习 CSS 中的伪元素 ::before 和 ::after
    CSS伪元素用于为元素的指定部分设置样式,作为回顾,先来看下 Mozilla 开发者网站上的解释:伪元素是一个附加至选择器末的关键词,允许你对被选择元素的特定部分修改样式。例如 ::first-line 伪元素可用于更改段落首行文字的样式。可用的CSS伪元素不是很多,但是,作为前端工程师......
  • 输出有10个元素的整型数组各元素的值
    (1)下标法编写程序:(2)指针法:将上面程序第7行和第10行的a[i]改为"*(a+i)"。(3)用指针变量指向数组元素编写程序:运行结果:对3种方法的比较:        方法(1)和(2)的执行效率是相同的。C++编译系统是将a[i]转换为*(a+1)处理的,对每个a[i]都分别计算地址a+ixd,然后访问该元素。第......
  • js实现元素拖拽
    采用vueuse中的useDraggable,使用便捷,不需要过多复杂的操作实现流程在项目中安装vueusenpmi@vueuse/core然后在需要用到的页面引入useDraggableimport{useDraggable}from"@vueuse/core";使用通过调用useDraggable函数,将需要进行拖拽的元素dragref作为入参传入,同时......