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

C++求根节点到叶子节点数字之和

文章目录

  • 题目链接
  • 题目描述
  • 解题思路
  • 代码
  • 复杂度分析

题目链接

LCR 049. 求根节点到叶节点数字之和 - 力扣(LeetCode)

题目描述

给定一个二叉树的根节点 root ,树中每个节点都存放有一个 09 之间的数字。

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

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

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

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

解题思路

其实对于这种二叉树类的题目,并且又提到根节点--->叶节点,我们应该很容易想到dfs.

所以我们尝试用dfs来解答这道题目

①截止条件

截止条件就是当我们遇到叶子节点的时候我们只需要返回之前路径的值 * 10 + 当前节点的值

②中间过程

我们坚信dfs(TreeNode* root, int presum)这个函数可以将root中的值算出来;

所以对于一个中间节点,我们只需要:

        int ret = 0;if(root->left)ret += dfs(root->left, presum);if(root->right)ret += dfs(root->right, presum);return ret;

至此我们解题思路就到此为止

代码

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;}
};

复杂度分析

时间复杂度:

相当于深度优先遍历了二叉树,所以时间复杂度就是O(N);

空间复杂度:

额外使用了常数个变量所以空间复杂度是O(1);

http://www.lryc.cn/news/210440.html

相关文章:

  • C++搜索二叉树
  • 软件工程17-18期末试卷
  • 课题学习(九)----阅读《导向钻井工具姿态动态测量的自适应滤波方法》论文笔记
  • 阿里云服务器—ECS快速入门
  • Hive简介及核心概念
  • CrossOver 23.6.0 虚拟机新功能介绍
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • centos更改yum源
  • React-快速搭建开发环境
  • 算法随想录算法训练营第四十六天| 583. 两个字符串的删除操作 72. 编辑距离
  • vue源码分析(五)——vue render 函数的使用
  • Maven第三章:IDEA集成与常见问题
  • 数据结构—线性实习题目(二)5迷宫问题(栈)
  • Nginx 的配置文件(负载均衡,反向代理)
  • 项目管理49个过程定义与作用、五大过程组
  • MySQL篇---第六篇
  • QA新人入职任务
  • 更新电脑显卡驱动的操作方法有哪些?
  • [Docker]三.Docker 部署nginx,以及映射端口,挂载数据卷
  • 【0基础学Java第三课】-- 运算符
  • unocss和tailwindcss css原子引擎
  • HIT_OS_LAB1 调试分析 Linux 0.00 引导程序
  • C语言每日一题(18)数组匹配
  • redroid11 集成 nvidia gpu hals
  • 在 Visual Studio 中远程调试 C++ 项目
  • AAOS CarMediaService 问题分析
  • 06-Flask-蓝图的使用
  • 【LeetCode力扣】189 53 轮转数组 | 最大子数组和
  • Go学习第十七章——Gin中间件与路由
  • 真实感渲染的非正式调研与近期热门研究分享