leetcode 129. Sum Root to Leaf Numbers (求根到叶子节点数字之和)

给定一个二叉树,节点包含0-9的数字,从根到叶子节点的路径表示一个数字。题目要求计算所有从根到叶子的数字路径之和。解题方法是利用字符串拼接数字并在叶子节点处累加,通过遍历二叉树实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目要求

给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。
例如,从根到叶子节点路径 1->2->3 代表数字 123。
计算从根到叶子节点生成的所有数字之和。

说明: 叶子节点是指没有子节点的节点。
在这里插入图片描述

解题思路

主要的思想是,我们对每一层的节点进行拼接累加,什么意思呢?看example1,我们需要拼接1,2和1,3两个数字为12,13。之后因为他们是叶子节点,所以我们要把他们加起来。 如何拼接呢? 最简单的方法,我们使用字符串的形式。这样直接进行数字的拼接就可以了,不用再去个位,十位的进行转换。非常好理解。
要点:
(1)字符串拼接数字
(2)到叶子节点进行累加和。

主要代码python

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def sumNumbers(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        if root is None:
            return 0
        self.result = 0
        self.dfs(root, '')
        return self.result
    #  递归搜索过程,遇到叶子结点就进行累加操作
    def dfs(self, node, s):
        if not node.left and not node.right:
            self.result += int(s + str(node.val))
        if node.left:
            self.dfs(node.left, s+str(node.val)) # s + str(node.val) 是到现在目前为止的数 如ex2中的节点9 就是‘49’
        if node.right:
            self.dfs(node.right, s+str(node.val))  

原题链接:https://leetcode.com/problems/sum-root-to-leaf-numbers/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值