LeetCode-层数最深叶子结点的和

层数最深叶子结点的和

LeetCode-1302

  • 这里可以采用上一题中求解二叉树的深度的方法。
  • 因为需要记录最深结点的值的和,所以这里可以边求和,如果遇到不符合最深结点时再将和sum=0.
/**
 * 给你一棵二叉树,请你返回层数最深的叶子节点的和。
 **/
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<cstdio>
#include<queue>
#include<vector>
using namespace std;
// Definition for a binary tree node.
struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
/**
      1
     / \
    2  3
   / \  \
  4  5  6
 /       \
7        8
**/
class Solution {
private:
    int maxdepth=0;//树的最大深度
    int sum=0;//树的最大深度的结点值的和。
public:
    void DFS(TreeNode* node,int depth){
        if(!node->left&&!node->right){
            if(depth>maxdepth){
                sum=node->val;
                maxdepth=depth;
            }else if(depth==maxdepth){
                sum+=node->val;
            }
            return;
        }
        if(node->left){
            DFS(node->left,depth+1);
        }
        if(node->right){
            DFS(node->right,depth+1);
        }
    }
    int deepestLeavesSum(TreeNode* root) {
        if(root){
            DFS(root,1);
        }
        return sum;
    }
};
posted @   Garrett_Wale  阅读(401)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示