首页 > 其他分享 >acwing2022秋招每日一题 1302. 层数最深叶子节点的和

acwing2022秋招每日一题 1302. 层数最深叶子节点的和

时间:2022-08-17 20:57:21浏览次数:73  
标签:TreeNode 1302 int res acwing2022 秋招 return root 节点

题目

给你一棵二叉树的根节点 root ,请你返回 层数最深的叶子节点的和 。

思路

根据层序遍历,访问所有节点。将每一层上的结点,进行统计,直到最后一层时,统计所有节点数。

解法

class Solution {
public:
    int levelTravel(TreeNode *root, queue<TreeNode *> &q)
    {
        q.push(root);
        int res = 0;

        while (!q.empty())
        {
            int len = q.size();
            res = 0;
            while (len--)
            {
                TreeNode *n;
                n = q.front();
                res += n->val;
                if (n->left)
                {
                    q.push(n->left);
                }
                if (n->right)
                {
                    q.push(n->right);
                }
                q.pop();
            }
        }
        return res;
    }

    int findDeepth(TreeNode *root)
    {
        int deepth = 1;
        TreeNode *head = root;
        while (head->left)
        {
            head = head->left;
            deepth += 1;
        }
        return deepth;
    }

    int deepestLeavesSum(TreeNode *root)
    {
        int res = 0;
        int level = 0;
        queue<TreeNode *> q;
        res = levelTravel(root, q);
        int depth = findDeepth(root);
        return res;
    }
};

yxc解法

class Solution {
public:
    int depth = -1, sum = 0;

    void dfs(TreeNode* root, int d) {
        if (!root) return;
        if (d > depth) depth = d, sum = root->val;
        else if (d == depth) sum += root->val;
        dfs(root->left, d + 1);
        dfs(root->right, d + 1);
    }

    int deepestLeavesSum(TreeNode* root) {
        dfs(root, 0);
        return sum;
    }
};
作者:yxc
链接:https://www.acwing.com/activity/content/code/content/4111095/

解法分析

广度优先算法,访问所有节点,每进一步意味着深入一层。

标签:TreeNode,1302,int,res,acwing2022,秋招,return,root,节点
From: https://www.cnblogs.com/nlyide/p/16596685.html

相关文章

  • 【.Net力扣刷题】第1302题:层数最深叶子节点的和
    题目描述来源:力扣(LeetCode)链接:https://leetcode.cn/problems/deepest-leaves-sum/给你一棵二叉树的根节点root,请你返回层数最深的叶子节点的和。题目分析本题需......
  • leetcode1302-层数最深叶子节点的和
    层数最深叶子节点的和BFS层序遍历树,返回最后一次计算的结果classSolution{publicintdeepestLeavesSum(TreeNoderoot){List<TreeNode>list=new......
  • 23届秋招美团内推推推!开始啦!!
    自我介绍本人为20届应届生,在19年秋招期间,拿到了网易、小米、美团等企业的Offer,最后和美团双向奔赴,在美团工作的这两年,可以说是收获满满,推荐大家来到美团这个温暖的大......
  • 计算机操作系统秋招学习第一轮(二)
    主要参考书籍:《CSAPP》、《图解操作系统》上回学到了写传播在解决这个缓存一致性的问题,其实我们只需要做到写传播和事务串行化写传播就是指一个核心的cache发生了数据变......
  • 计算机操作系统秋招学习第一轮(四)
    #主要参考书籍:《CSAPP》、《图解操作系统》、《MOS现代操作系统》上一篇主要就是进程概念的阐述与拓展本篇我们来学习一下:如何控制进程控制进程,即控制进程的......
  • 计算机操作系统秋招学习第一轮(三)
    主要参考书籍:《CSAPP》、《图解操作系统》、《MOS现代操作系统》本篇着重学习线程与进程进程小林coding对进程的解释:代码以二进制的文件形式存储到内存当中,CPU读取并执......
  • c++xx 秋招学习STL库(三)
    主要参考:本篇学习无序关联式容器无序关联式容器种类无序容器功能unordered_map存储键值对<key,value>类型的元素,其中各个键值对键的值不允许重复,且该......
  • c++xx 秋招学习STL库(二)
    Map、Set、Unordered_map类与数据结构中所描述的一致,数组作为顺序型ADT,在STL库中vector也被称为序列式容器同时还存在着一些无序型容器我们本节主要就学习这类无序......
  • c++xx 秋招学习STL库 (一)【vector】
    c++xx秋招学习STL库(一)vector类主要针对一些编程时使用发现的一些问题与思考进行记录Vector的初始化一维数组//usingnamespacestd;vector<int>int_vec;vector<......