当前位置: 首页 > news >正文

层数最深叶子节点的和(深度优先搜索)

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

示例 1:

输入:root = [1,2,3,4,5,null,6,7,null,null,null,null,8]
输出:15

示例 2:

输入:root = [6,7,8,2,7,1,3,9,null,1,4,null,null,null,5]
输出:19

提示:

  • 树中节点数目在范围 [1, 104] 之间。
  • 1 <= Node.val <= 100
/*** 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 {int maxDepth;// 深度优先搜索void getMaxDepth(TreeNode* root, int dep) {if (root == NULL) {return;}if (dep > maxDepth) {maxDepth = dep;}getMaxDepth(root->left, dep + 1);getMaxDepth(root->right, dep + 1);}int deepestSum(TreeNode* root, int dep) {if (root == NULL) {return 0;}if (maxDepth == dep) {return root->val;}return deepestSum(root->left,dep+1)+deepestSum(root->right,dep+1);}public:int deepestLeavesSum(TreeNode* root) {maxDepth = 0;getMaxDepth(root, 0);return deepestSum(root,0);}
};

题目需要我们求出树最深处的值的和,我们就应该使用深度优先搜索,来找到树的最大深度

(1)我们先定义一个函数来求得最大深度。首先我们先选择递归出口,当节点为空时则结束递归,每次递归时都判断深度是否为最大深度,每次往下递归,就将深度加1,最终遍历完整颗树后,得出最大深度。

(2)我们知道最大深度后,还需要在遍历一次这颗树,当节点为最大深度时,加进sum。首先我们想递归出口,当root为NULL时说明树为空返回0,如果最大深度等于当前节点深度时,则返回当前节点的值,如果不是最大深度,则返回左右子节点找到的最大深度的值的和。

http://www.dtcms.com/a/392569.html

相关文章:

  • 【git】安装和基本指令
  • 如何利用AI技术快速生成专业级的PPT和视频内容
  • Linux系统之----线程互斥与同步
  • ARM SMMUv2架构下的安全和非安全状态(secure/non-secure)下的的资源分配解析
  • 面向linux新手的OrcaTerm AI 最佳实践
  • 构建高可用 LVS-DR + Keepalived 负载均衡集群实战指南
  • 网络协议总结
  • Python多线程爬虫加速电商数据采集
  • JVM之直接内存(Direct Memory)
  • 深入理解C指针(四):回调函数与qsort——指针实战的终极舞台
  • 翻拍图像检测(即拍摄屏幕的照片)功能实现思路
  • 【Linux】进程概念(上):从冯诺依曼到进程入门
  • 计算机视觉(opencv)实战二十八——基于 OpenCV CSRT 跟踪器的实时目标
  • 【Mysql】深分页问题、页分裂问题、加密/解密、执行计划
  • 【名人简历】牛顿
  • coze开发的牙科AI智能体助手web页面
  • JavaEE初阶——从入门到掌握线程安全
  • GitHub热门大数据项目:基于人体生理指标管理的可视化分析系统技术解析
  • 零基础学Docker(2)--基本命令
  • 华为FusionCloud私有云:企业数字化转型的智能底座
  • 【LVS入门宝典】LVS NAT模式深度解析:从原理到实战配置指南
  • MQ 项目(实习项目,初步更新)
  • Redis中Lua脚本的应用场景分析
  • phpkg 让 PHP 摆脱 Composer 依赖地狱
  • Python -- 人生重开模拟器(简易版)
  • CSS基础查缺补漏(持续更新补充)
  • 用户生命周期价值(CLV)目标变量系统性设计与实践(二)
  • TDengine 与工业应用平台 Ignition 集成
  • JVM垃圾收集中判断对象存活相关问题
  • 【C++】告别“类型转换”踩坑,从基础到四种核心强制转换方式