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

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

 思路:还是有关二叉树的路径的问题,可以把之前计算二叉树路径的代码翻出来,然后稍作修改即可,将那篇博客放下面咯。

现在也不需要保存每条路径了,只需要维护一个current_sum,用来保存每条路径数字之和即可。

112. 路径总和-CSDN博客

代码(Python):

class Solution(object):
    def sumNumbers(self, root):
        result = []                  #保存每条路径之和
        current_sum = 0              #计算路径之和
        def backtracking(node,current_sum):
            if not node:
                return 
            current_sum = current_sum*10 + node.val
            if not node.left and not node.right:  #遇到叶子结点,将这条路径之和放入result
                result.append(current_sum)
                current_sum = 0                   #将current_sum置为0
                return
            ways = []
            if node.left:
                ways.append(node.left)
            if node.right:
                ways.append(node.right)
            for way in ways:
                backtracking(way,current_sum)
        backtracking(root,current_sum)
        return sum(result)
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值