NC5 二叉树根节点到叶子节点的所有路径和

news2025/4/19 21:26:15

描述
给定一个二叉树的根节点root,该树的节点值都在数字0−9 之间,每一条从根节点到叶子节点的路径都可以用一个数字表示。
1.该题路径定义为从树的根结点开始往下一直到叶子结点所经过的结点
2.叶子节点是指没有子节点的节点
3.路径只能从父节点到子节点,不能从子节点到父节点
4.总节点数目为n

例如根节点到叶子节点的一条路径是1→2→3,那么这条路径就用123 来代替。
找出根节点到叶子节点的所有路径表示的数字之和
例如:
在这里插入图片描述
这颗二叉树一共有两条路径,
根节点到叶子节点的路径 1→2 用数字12 代替
根节点到叶子节点的路径 1→3 用数字13 代替
所以答案为12+13=25

数据范围:节点数 0≤n≤100,保证结果在32位整型范围内
要求:空间复杂度 O(n),时间复杂度 O(n^2)
进阶:空间复杂度 O(n),时间复杂度 O(n)

示例1
输入:{1,2,3}
返回值:25

示例2
输入:{1,0}
返回值:10

示例3
输入:{1,2,0,3,4}
返回值:257

牛客网

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param root TreeNode类 
     * @return int整型
     */
    public int sumNumbers (TreeNode root) {
        // write code here
        if(root == null) return 0;
        int sum = dfs(root,path,0);
        return sum;
    }
    int dfs(TreeNode root,int arr){
        if(root == null){return 0;}
        arr = arr*10+root.val;
        if(root.left == null && root.right == null ) return arr;
        else return dfs(root.left,arr)+dfs(root.right,arr);
    }
}

同样的方法,保存的是所有到叶节点的路径,继而求出总sum。

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param root TreeNode类 
     * @return int整型
     */
    public int sumNumbers (TreeNode root) {
        // write code here
        ArrayList<ArrayList<Integer>> path = new ArrayList<>();
        if(root == null) return 0;
        ArrayList<Integer> arr = new ArrayList<>();
        dfs(root,path,arr);
        int sum = 0;
        for(int i = 0 ;i<path.size();i++){
            arr = path.get(i);
            int val = 0;
            for(int j = 0 ;j<arr.size();j++){
                val  = val*10 + arr.get(j);
            }
            sum += val;
        }
        return sum;
    }
    void dfs(TreeNode root,ArrayList<ArrayList<Integer>> path ,ArrayList<Integer> arr){
        if(root == null){return;}
        arr.add(root.val);
        if(root.left == null && root.right==null) path.add(new ArrayList<>(arr));
        dfs(root.left,path,arr);
        dfs(root.right,path,arr);
        arr.remove(arr.size()-1);
    }
}

栈:

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

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

相关文章

java命令中的options

1. Java命令概述 安装JDK时&#xff0c;会使用java -version查看JDK版本&#xff0c;并验证安装是否成功直接输入java&#xff0c;会给出java命令的使用说明 -options&#xff1a;可选&#xff0c;java命令的命令行选项&#xff0c;多个选项使用空格分隔class&#xff1a;要启…

新人一看就懂:Dubbo3 + Nacos的RPC远程调用框架demo

文章目录一、前言Feign和Dubbo到底有啥区别&#xff0c;为啥大厂都爱用RPC框架&#xff1f;二、简介三、dubbo-api&#xff08;对外暴漏的接口&#xff09;1、pom依赖2、TestService接口四、dubbo-provider&#xff08;服务提供者&#xff09;1、pom依赖2、TestServiceImpl实现…

HCIP-Datacom OSPF进阶(一) 最常用的动态路由协议

目录 OSPF&#xff1a;开放式最短路径优先 OSPF配置方法&#xff1a; OSPF报文头部&#xff1a; OSPF报文类型&#xff1a; OSPF状态机&#xff1a; DR与BDR的作用&#xff1a; 设置选举DR时的优先级&#xff1a; OSPF的网络类型&#xff1a; 修改OSPF接口网络类型命令…

java毕业设计教学平台(附源码、数据库)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…

Java实现五子棋小游戏(附源码)

Java进阶学习专栏&#xff1a;【Java】进阶篇 Java基础学习专栏&#xff1a;【Java】基础篇 文章目录一、游戏介绍二、效果展示三、代码展示1、登录页面2、算法程序3、棋盘实现四、资源下载五、文末总结一、游戏介绍 今天给大家分享一个用java写的小游戏——《五子棋》 &#…

计算机毕业设计SSM电影网站系统【附源码数据库】

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【编程题】【Scratch三级】2021.12 数星星

数星星 Goblin有个很厉害的魔法:他一挥手就可以点亮夜空中五彩斑斓的星星灯。 1. 准备工作 (1)删除小猫角色,添加"Goblin"角色,并删除Goblin角色的造型"golblin-a"、“goblin-c"和"goblin-d”,添加角色"Star"; (2)添加“Sta…

Matlab之自适应位移相位中心天线脉冲消除器(附源码)

目录 一、何时使用自适应DPCA脉冲消除器 二、自适应DPCA脉冲消除器可抑制杂波和干扰 三、程序 一、何时使用自适应DPCA脉冲消除器 考虑需要抑制杂波的机载雷达系统 返回并可能干扰干扰。根据以下任何一项 条件下&#xff0c;可以选择自适应 DPCA &#xff08;ADPCA&#xf…

数据挖掘与分析应用:tableau可视化数据分析,仪表盘,折线图,饼图,条形图,地图,散点图,区域图,表格,数据分析引用

数据挖掘与分析应用&#xff1a;tableau可视化数据分析&#xff0c;仪表盘&#xff0c;折线图&#xff0c;饼图&#xff0c;条形图&#xff0c;地图&#xff0c;散点图&#xff0c;区域图&#xff0c;表格&#xff0c;数据分析引用 2022找工作是学历、能力和运气的超强结合体&…

Java集合

一、集合概述 1、数组的特点 数组的大小是固定的&#xff0c;一旦创建后&#xff0c;数组的大小是无法改变的。数组只能存储相同类型的数据。数组查询效率高(有索引&#xff0c;元素内存连续分配)&#xff0c;增删效率低(不断的扩容)。 2、数组和集合的区别 相同点&#xff1…

【Designing ML Systems】第 6 章 :模型开发和离线评估

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

目标检测论文解读复现之三:基于改进YOLOv7的X光图像旋转目标检测

目标检测论文解读复现 文章目录目标检测论文解读复现前言一、摘要二、网络模型及核心创新点三、应用数据集四、实验效果五、实验结论六、投稿期刊介绍前言 此前出了目标改进算法专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果…

json字符串、JSNObject、JSONArray、jsonbean、list等相关的转换、过滤工具方法测试

一、准备工作 引入pom <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.78</version> </dependency><dependency><groupId>org.projectlombok</groupId><art…

云计算 - 4 - Spark的安装与应用

云计算 - 4 - Spark的安装与应用目标Spark 的安装&#xff1a;1、下载配置 Scala1.1 下载 Scala1.2 配置 Scala 的路径1.3 测试 Scala 是否安装完成2、下载配置Spark2.1 下载Spark2.2 配置 Spark 的路径2.3 修改 Spark 的配置文件3、将文件复制到子节点4、启动Spark5、测试Spar…

nginx模块

目录 搭建域名虚拟主机 nginx索引 状态索引 访问控制 基于ip限制 基于用户限制 配置nginx官方yum源 http://nginx.org/en/linux_packages.html#RHEL-CentOS vim /etc/yum.repos.d/nginx.repo [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/cent…

Linux调试工具:gdb的使用

文章目录一、gdb简介二、gdb基础命令操作1.进入gdb &#xff1a;gdb 文件名2.显示代码&#xff1a;l3.开始调试&#xff1a;r4.打断点&#xff1a;b 行号5.显示断点信息&#xff1a;info b6.删断点&#xff1a;d 编号7.逐过程&#xff1a;n8.逐语句&#xff1a;s9.进入堆栈&…

JavaScript基础

目录 数据类型 基本数据类型 引用数据类型 变量 运算符 算数运算符 赋值运算符 字符串连接符 关系运算符 逻辑运算符 三目运算符 分支语句 循环语句 流程控制语句 错误处理 函数 数组 对象 内置对象 String RegExp Math Date 全局函数 简介&#xff1a; 是…

Nginx虚拟主机与域名解析

文章目录一、域名、dns、ip地址之间的关系二、浏览器、nginx与http协议三、虚拟主机原理四、域名解析与泛解析1.公网ip解析2.内网ip解析五、域名解析相关企业项目实战技术架构1.多用户二级域名2.短网址3.httpDNS一、域名、dns、ip地址之间的关系 域名代表了一个公司、一个人或…

C语言之文件的使用(下)

目录 前言 一、文件的随机读写 1.如何进行随机读写 2.相关函数&#xff08;含例子&#xff09; 1.fseek函数 2.ftell函数 3.rewind函数 二、文件读取结束的判定 1.判定结束的相关函数 1.feof函数 2.ferror函数 2.不同类型文件 1.文本文件和二进制文件 2.不同文件的所判断的返回…

win10怎么安装iis

在win10系统桌面&#xff0c;点击开始菜单里的设置图标。 win10怎么安装iis 在Windows设置界面&#xff0c; 点击应用。 win10怎么安装iis 在应用界面&#xff0c;点击【程序和功能】。 win10怎么安装iis 在程序管理界面&#xff0c;点击启用或关闭Windows功能。 win10怎…