【递归搜索回溯专栏】专题二:二叉树中的深搜----求根节点到叶节点数字之和

简介: 【递归搜索回溯专栏】专题二:二叉树中的深搜----求根节点到叶节点数字之和


题目来源

本题来源为:

Leetcode 129. 求根节点到叶节点数字之和

题目描述

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

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

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

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

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

算法原理

还是从例子下手,例如下面这个就是要将1247,1258,12594,125931,1367加起来的值就是我们需要的结果。

递归我们看一层,比如5这个节点,5这个节点我们需要干什么事情,他要拿到1258,12594,125931这三个的值然后返回给根节点。先看1258这个数,要想获得1258这个数,我们是不是首先要拿到12,因此要先把12拿过来。

那么所以:

第一步:当到5节点这一层要先算出125.

第二步:将125传给左边

第三步:将125传给右边

第四步:把两个返回值相加返回到上一层的节点。

那么其他层跟5节点是一样的,都需要这四步。

函数头

因为要记录上一层的值,因此要在传根的基础上加一个参数。

函数体

跟5节点分析一样,分成1 2 3 4步

返回值

当遇到为叶子节点时就返回。

注意递归出口是在第一步后结束的。

代码实现

class Solution 
{
public:
    int sumNumbers(TreeNode* root) 
    {
        return dfs(root,0);
    }
    int dfs(TreeNode*root,int presum)
    {
        presum=presum*10+root->val;
        if(root->left==nullptr&&root->right==nullptr)
            return presum;
        int ret=0;
        if(root->left)ret+=dfs(root->left,presum);
        if(root->right)ret+=dfs(root->right,presum);
        return ret;
    }
};
相关文章
|
JSON NoSQL Java
【Redis】2、Redis 的 Java 客户端(Jedis 和 SpringDataRedis)
【Redis】2、Redis 的 Java 客户端(Jedis 和 SpringDataRedis)
599 0
|
存储 数据处理 数据中心
1U和2U服务器应如何正确选择?各有什么优缺点?
标准机架式服务器以U为高度单位,1U和2U服务器各有优缺点。1U服务器体积小、性价比高,但扩展性和散热性较差;2U服务器扩展性好、散热佳、稳定性强,但托管费用较高。不同高度的服务器适用于不同的业务场景,选择时需根据具体需求决定。未来数据中心将根据业务特性选择合适的服务器类型,而非统一采用2U服务器。
365 2
|
PyTorch API TensorFlow
Nvidia TensorRT系列01-基本介绍
NVIDIA TensorRT 是一个高性能的机器学习推理SDK,支持 TensorFlow、PyTorch 等框架。本文介绍了 TensorRT 的基本概念、安装指南、快速开始、案例和互补软件,如 NVIDIA Triton 推理服务器、DALI 和 TF-TRT。同时,文章还涵盖了 ONNX 支持、版本控制和弃用策略等内容。
360 1
|
XML JSON Java
Jetpack 系列之Paging3,看这一篇就够了~
Jetpack 系列之Paging3,看这一篇就够了~
3430 4
Jetpack 系列之Paging3,看这一篇就够了~
|
监控 Unix Linux
ps aux 命令使用查看内存、cpu使用排名与top的区别
ps aux 命令使用查看内存、cpu使用排名与top的区别
1934 1
|
缓存 Java Android开发
Android应用性能优化实战
【5月更文挑战第14天】 在竞争激烈的应用市场中,一个流畅、高效的应用能显著提升用户体验并增强用户黏性。本文深入探讨了针对安卓平台进行应用性能优化的策略与实践,从内存管理到多线程处理,再到布局渲染和网络请求的优化,旨在为开发者提供一套全面的优化工具箱。通过分析常见的性能瓶颈并结合最新的Android技术动态,我们不仅讨论理论,还将分享具体的代码示例和改进方法,帮助开发者在实际应用中实现性能提升。
|
C++ Python Java
protobuf 更新消息和扩展,包
一、更新一个消息类型 如果一个已有的消息格式已无法满足新的需求——如,要在消息中添加一个额外的字段——但是同时旧版本写的代码仍然可用。不用担心!更新消息而不破坏已有代码是非常简单的。
1424 0
|
SQL 算法 计算机视觉
百度飞桨课堂小白逆袭大神第三天课程(整理)
百度飞桨课堂小白逆袭大神第三天课程(整理)
307 0
百度飞桨课堂小白逆袭大神第三天课程(整理)
|
弹性计算 Linux 数据安全/隐私保护
阿里云ECS服务器使用体验
阿里云服务器的免费体验是大学生熟悉相关专业技能的一项良心举措,能够帮助刚入大学家庭条件并不是很好的大学生免费体验云服务器的使用效果,在通过一周的使用之后,我感觉阿里云服务器用起来非常方便,我希望能够继续申请两个月的免费时长,便于快速熟悉ECS功能。

热门文章

最新文章