LeetCode_二叉树_DFS_中等_129.求根节点到叶节点数字之和

news2024/11/26 23:49:02

目录

  • 1.题目
  • 2.思路
  • 3.代码实现(Java)

1.题目

给你一个二叉树的根节点 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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/sum-root-to-leaf-numbers

2.思路

(1)DFS

相关题目:
LeetCode_二叉树_中等_113.路径总和 II

3.代码实现(Java)

//思路1————DFS
/**
 * 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 {
    
    StringBuilder builder = new StringBuilder();
    int res = 0;
    
    public int sumNumbers(TreeNode root) {
        dfs(root);
        return res;
    }
    
    private void dfs(TreeNode root) {
        if (root == null) {
            return;
        }
        builder.append(root.val);
        if (root.left == null && root.right == null) {
            res += Integer.parseInt(builder.toString());
        }
        dfs(root.left);
        dfs(root.right);
        builder.deleteCharAt(builder.length() - 1);
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机网络】IP 地址处理函数

目录 1.struct sockaddr_in的结构 2.一般我们写的结构 3.常见的“点分十进制” 到 ” uint32_t 的转化接口 3.1. inet_aton 和 inet_ntoa &#xff08;ipv4&#xff09; 3.2. inet_pton 和 inet_ntop (ipv4 和 ipv6&#xff09; 3.3. inet_addr 和 inet_network 3…

人工智能-深度学习-科研神器推荐

根据知乎问题 有没有什么可以节省大量时间的 Deep Learning 效率神器&#xff1f; 的回答&#xff0c;筛选整理出一些深度学习科研神器。包括参数优化、数据可视化、模型部署蒸馏剪枝等。收录到 人工智能-深度学习-科研神器推荐https://​www.webhub123.com/#/home/detail?p4O…

vue监听缓存数据(localStorage)

方法&#xff1a;可以重写localStorage的setItem方法&#xff0c;当调用setItem方法设置新值的时候&#xff0c;会new Event(‘setItemEvent’) 用window.dispatchEvent()这个方法来派发一个事件&#xff0c;让window去监听 以下demo实现的是 一个页面获取诗句 然后将获取的数据…

【P51 】JMeter 聚合报告(Aggregate Report)

文章目录 一、聚合报告&#xff08;Aggregate Report&#xff09;参数说明二、准备工作三、测试计划设计 一、聚合报告&#xff08;Aggregate Report&#xff09;参数说明 可以查看事务或者取样器在某个时间范围内执行的汇总结果 使用场景&#xff1a;用于评估测试结果 使用…

2023-06-07 stonedb-包含内连接外连接派生表in子查询和聚合-查询结果错误-分析问题的思路

摘要: 最近在处理stonedb的一个包含内连接包含内连接外连接派生表in子查询和聚合的查询出错的问题, 逻辑非常复杂, 包含的操作符非常多. 本文首先从顶层设计出发, 指出如何分析如此复杂的问题。 查询SQL: SELECTB.company_id,上划日 ud_type,2 sort_no,合计 fiscal_date,DAT…

输入java -version 命令行没反应的简单解决办法【亲测有效】

&#x1f4a7; 记录一下今天遇到的 b u g \color{#FF1493}{记录一下今天遇到的bug} 记录一下今天遇到的bug&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云的博客&#x1f390; &#x1f433; 数据结构与算法…

qemu+buildroot+linux arm64操作系统虚拟化-宿主系统wsl2

文章目录 1.qemu2.buildroot配置编译 3.linux kernel下载交叉编译工具链 linux kernel 5.16配置内核config_kernel.shbuild_kernel.sh 4.启动虚拟机start_qemu.sh参数解释运行 环境&#xff1a; wls2、qemu8.2、buildroot、linuxkernel 1.qemu https://buildroot.org/download…

Python知识点:lambda 表达式

大家好&#xff0c;欢迎来到 Crossin的编程教室 &#xff01; Python 是一门简洁的语言&#xff0c;lambda 表达式则充分体现了 Python 这一特点。 lambda 表达可以被看做是一种匿名函数。它可以让你快速定义一个极度简单的单行函数。譬如这样一个实现三个数相加的函数&#xf…

学会使用perf性能分析工具(含移植到开发板)

文章目录 一、在ubuntu中使用apt包下载Perf二、使用源码安装Perf&#xff0c;并移植到arm-linux环境下三、使用perf四、Perf的功能介绍 系统&#xff1a;Ubuntu18.04系统 内核版本&#xff1a;5.4.0-150-generic&#xff08;通过uname -r查看&#xff09; 一、在ubuntu中使用ap…

Linux驱动系列-PWM驱动

转自&#xff1a;嵌入式系统研发 1.概述 本文主要讲述了Linux的PWM驱动框架、实现方法、驱动添加方法和调试方法。 示例Linux内核版本&#xff1a;6.2.8。 2.原理 PWM是Pulse-Width Modulation的简称&#xff0c;中文译作脉冲宽度调制。作为一种调制技术&#xff0c;PWM的…

SpringBoot实现异步调用的几种方式

一、使用 CompletableFuture 实现异步任务 CompletableFuture 是 Java 8 新增的一个异步编程工具&#xff0c;它可以方便地实现异步任务。使用 CompletableFuture 需要满足以下条件&#xff1a; 异步任务的返回值类型必须是 CompletableFuture 类型&#xff1b; 在异步任务中…

基于vasp计算材料红外与Raman光谱信息

使用方法一&#xff1a;获取材料raman活性信息 代码链接&#xff1a;VASP/Sibulk-VASP at master raman-sc/VASP GitHub 前置计算材料的振动频率和介电常数等&#xff0c;参考INCAR如下&#xff1a; SYSTEM Si_bulk ISTART 0 # From-scratch; job : 0-new 1-cont 2-same…

4-2 贪心算法的基本要素

博主简介&#xff1a;一个爱打游戏的计算机专业学生博主主页&#xff1a; 夏驰和徐策所属专栏&#xff1a;算法设计与分析 1.什么是贪心选择性质 贪心选择性质是一种在算法设计中经常使用的策略。它基于这样的思想&#xff1a;在每一步选择中&#xff0c;都选择当前看起来最优…

多篇论文入选ICASSP 2023,火山语音有效解决多类实践问题

近日由IEEE主办、被誉为世界范围内最大规模、也是最全面的信号处理及其应用方面的顶级学术会议ICASSP2023于希腊召开&#xff0c;该会议具有权威、广泛的学界以及工业界影响力&#xff0c;备受AI领域多方关注。会上火山语音多篇论文被接收并发表&#xff0c;内容涵盖众多前沿领…

superset db upgrade报错记录

superset db upgrade报错记录 报错1报错2报错3报错4报错5报错6成功了 报错1 (superset) [hyjhadoop102 ~]$ superset db upgradefrom markupsafe import soft_unicode ImportError: cannot import name soft_unicode from markupsafe (/opt/module/miniconda3/envs/superset/l…

git基本操作(笔记)

安装 查看是否安装成功 git --version配置用户名和邮箱 参数global表示全局配置&#xff0c;对所有仓库生效&#xff0c;system表示系统配置&#xff0c;对所有用户生效&#xff0c;省略是&#xff08;local&#xff09;表示本地配置&#xff0c;只对本地仓库有效。 git config…

奇安信 渗透测试(攻防类)一面复盘

奇安信 渗透测试&#xff08;攻防类&#xff09;一面复盘 1.你是哪里人2.你是做安全研发的&#xff0c;在qax这边除了这个红队的岗位还投递其他了吗3.看你研发做的比较多&#xff0c;为什么投递这个岗位4.给了一个具体的场景&#xff0c;问你做渗透测试的思路5.后渗透有了解吗&…

form-inserter 让你的表单插入更轻松

挖SRC的时候经常需要向 input 框或者textarea 框中插入一些payload&#xff0c;但是遇到某个网页需要插入的输入框很多或者payload 很复杂的时候&#xff0c;就需要多次复制粘贴&#xff0c;过程比较繁琐。 例如如下两种情况: 情况1&#xff1a;输入框很多 情况2&#xff1a;…

C语言趣味小游戏---利用二维数组实现三子棋游戏

学习了C语言中的二维数组&#xff0c;本照着学以致用的原则&#xff0c;现在利用对二维数组的操作来实现一个简单版的三子棋游戏。 三子棋其实我们都玩过&#xff0c;在我们这边又叫"一条龙"。就是一个九空格&#xff0c;下棋的双方依次在九个空格里面下棋&#xff0…

Jetson Nano之ROS入门 - - SLAM之Gmapping建图与路径规划

文章目录 前言一、Gmapping建图算法1、Gmapping算法流程原理2、Gmapping建图实操 二、AMCL蒙特卡洛定位1、自适应蒙特卡洛定位算法原理2、AMCL定位实操 三、move_base路径规划1、路径规划算法简介2、代价地图简介2、move_base路径规划实操 总结 前言 SLAM&#xff08;Simultane…