「递归算法」:求根节点到叶节点数字之和

一、题目

给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。

每条从根节点到叶节点的路径都代表一个数字:

  • 例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。

计算从根节点到叶节点生成的 所有数字之和 。

叶节点 是指没有子节点的节点。

示例 1:

输入:root = [1,2,3]
输出:25
解释:
从根到叶子节点路径 1->2代表数字 12从根到叶子节点路径 1->3代表数字 13因此,数字总和 = 12 + 13 = 25

示例 2:

输入:root = [4,9,0,5,1]
输出:1026
解释:
从根到叶子节点路径 4->9->5代表数字 495从根到叶子节点路径 4->9->1代表数字 491从根到叶子节点路径 4->0代表数字 40因此,数字总和 = 495 + 491 + 40 = 1026

提示:

  • 树中节点的数目在范围 [1, 1000] 内
  • 0 <= Node.val <= 9
  • 树的深度不超过 10

二、思路解析

树形结构,我们也应该有往递归上靠的意识,因为这个结构本身就是由一个个相同的子问题构成的。

而每层递归都要处理的问题,就是把父节点的值 * 10 之后加上根节点的值。同时只要还有左子树和右子树,就继续递归下去。

代码部分不难看懂的,具体实现也不复杂,具体请看下面代码👇

三、完整代码

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public int sumNumbers(TreeNode root) {return dfs(root , 0);}public int dfs(TreeNode root , int preSum){preSum = preSum * 10 + root.val;if(root.left == null && root.right == null){return preSum;}int ret = 0;if(root.left != null){ret += dfs(root.left , preSum);}if(root.right != null){ret += dfs(root.right , preSum);} return ret;}
}

以上就是本篇博客的全部内容啦,如有不足之处,还请各位指出,期待能和各位一起进步!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/486575.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Excel Ctrl + G快捷键快速标记不同

一. 需求 如下图所示&#xff0c;水果的预计销量和实际销量存在差异&#xff0c;现在想把与预计销量不同的实际销量标记出来。 二. Ctrl G 快捷键 ⏹如下图所示&#xff0c;先选中比较区域后&#xff0c;按下Ctrl G快捷键调出定位条件面板&#xff0c; 然后选择行内容差异…

第九届大数据与计算国际会议 (ICBDC 2024) 即将召开!

2024年第九届大数据与计算国际会议&#xff08;ICBDC 2024&#xff09;将于2024年5月24至26日在泰国曼谷举行。本次会议由朱拉隆功大学工程学院工业工程系主办。ICBDC 2024的宗旨是展示大数据和计算主题相关科学家的最新研究和成果&#xff0c;为来自不同地区的专家代表们提供一…

PolarDN MISC做题笔记

cat flag 使用01打开flag.png,发现图片尾部有padding的数据。D0 CF 11 E0 A1 B1 1A E1为office2007以前版本的文件头。将其另存为flag.doc,打开发现提示需要密码。&#xff08;可以注意到&#xff1a;D0CF11E0非常类似DOCFILE&#xff09; 使用john的office2john.py 提取hash …

泰迪智能科技大模型数据智能实验室

自2022年11月ChatGPT问世以来&#xff0c;大模型开始备受关注&#xff0c;科技巨头们纷纷推出大模型实验室解决方案。大模型的价值不知在于互联网场景&#xff0c;而在于大模型能力垂直化&#xff0c;能够与具体的业务需求深度融合。 大模型实验室是在学校现有的实验室建设基础…

如何在Pycharm中导入第三方库(以pyecharts为例子)

打开Pycharm 点击右上角文件->设置->项目->pythonProject&#xff08;Python解释器&#xff09; 点击下图号 下一步&#xff1a;在搜索栏中直接搜索第三方包pyecharts并安装即可 以上便为使用Pycharm安装第三方库的全过程。 温馨小提示&#xff0c;如果大家在Pychar…

工具分享:软件研发人员成本在线计算工具

无极低码 &#xff1a;https://wheart.cn 很多情况下我们会遇到很多客户&#xff0c;在软件预算报价过程中&#xff0c;总会说这功能很简单技术很成熟&#xff0c;费用为什么这么高&#xff1f;软件研发过程会涉及到很多环节&#xff0c;并不只是单纯的人工成本。以下所列并非…

openGauss学习笔记-227 openGauss性能调优-系统调优-其他因素对LLVM性能的影响

文章目录 openGauss学习笔记-227 openGauss性能调优-系统调优-其他因素对LLVM性能的影响 openGauss学习笔记-227 openGauss性能调优-系统调优-其他因素对LLVM性能的影响 LLVM优化效果不仅依赖于数据库内部具体的实现&#xff0c;还与当前所选择的硬件环境等有关。 表达式调用C…

CPU漏洞之Meltdown

1.前言 计算机系统的安全性从根本上依赖于内存隔离&#xff0c;例如内核(Kernel)地址范围被标记为不可访问&#xff0c;并对用户访问加以限制和保护&#xff0c;因此操作系统确保了用户程序不能访问彼此的内存或内核内存。这种内存隔离是我们计算机环境的基石&#xff0c;它允…

超级抽象的前端2

vue3的调用方法失败的原因 function validateConfirm(rule, value, callback) {if (value ! form.password) {callback(new Error(两次输入的密码不一致))} else {callback()}function showAgreement() {dialogVisible.value true}function submitForm() {// 这里是提交表单的…

【前端素材】推荐优质后台管理系统Vuesy平台模板(附源码)

一、需求分析 后台管理系统在多个层次上提供了丰富的功能和细致的管理手段&#xff0c;帮助管理员轻松管理和控制系统的各个方面。其灵活性和可扩展性使得后台管理系统成为各种网站、应用程序和系统不可或缺的管理工具。下面详细分析后台管理系统的定义和功能&#xff1a; 1.…

新代码质量评审标准与评分表格

前面发了一个《代码质量评审标准与评分表格》&#xff0c;是比较宽泛的&#xff0c;下面发一个更贴近具体场景的《新代码质量评审标准与评分表格》。 一、引言 本文档旨在为代码质量评审提供一个统一的标准和评分机制&#xff0c;以确保代码质量、可读性和可维护性。通过遵循这…

苍穹外卖Day02——总结2

前期文章 文章标题地址苍穹外卖Day01——总结1https://blog.csdn.net/qq_43751200/article/details/135466359?spm1001.2014.3001.5501苍穹外卖Day01——解决总结1中存在的问题https://lushimeng.blog.csdn.net/article/details/135473412 总结2 前期文章1. 新增员工模块1.1 …