前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 129. 求根节点到叶节点数字之和

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

原创
作者头像
freesan44
修改2021-10-03 13:12:54
4050
修改2021-10-03 13:12:54
举报
文章被收录于专栏:freesan44freesan44

题目地址(129. 求根节点到叶节点数字之和)

https://leetcode-cn.com/problems/sum-root-to-leaf-numbers/

题目描述

代码语言:txt
复制
给你一个二叉树的根节点 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

思路

用DFS的思维来累积res

代码

  • 语言支持:Python3

Python3 Code:

代码语言:txt
复制
# Definition for a binary tree node.

# class TreeNode:

#     def \_\_init\_\_(self, val=0, left=None, right=None):

#         self.val = val

#         self.left = left

#         self.right = right

class Solution:

    def sumNumbers(self, root: TreeNode) -> int:

        def dfs(node: TreeNode,cur: int) -> int:

            if not node:

                return 0

            if not node.left and not node.right:

                print(node.val,cur)

                return cur\*10+node.val

            cur = cur\*10 + node.val

            return dfs(node.left,cur)+dfs(node.right, cur)

        return dfs(root,0)

**复杂度分析**

令 n 为数组长度。

  • 时间复杂度:$O(n)$
  • 空间复杂度:$O(n)$

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目地址(129. 求根节点到叶节点数字之和)
  • 题目描述
  • 思路
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档