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

DayNightStudy

共 1284字,需浏览 3分钟

 ·

2021-01-30 23:12

给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。


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


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


说明: 叶子节点是指没有子节点的节点。


示例 1:


输入: [1,2,3]

    1

   / \

  2   3

输出: 25

解释:

从根到叶子节点路径 1->2 代表数字 12.

从根到叶子节点路径 1->3 代表数字 13.

因此,数字总和 = 12 + 13 = 25.

示例 2:


输入: [4,9,0,5,1]

    4

   / \

  9   0

 / \

5   1

输出: 1026

解释:

从根到叶子节点路径 4->9->5 代表数字 495.

从根到叶子节点路径 4->9->1 代表数字 491.

从根到叶子节点路径 4->0 代表数字 40.

因此,数字总和 = 495 + 491 + 40 = 1026.



题目解析


题目解答

方法:回溯法思路:    step 1:判空    step 2:回溯



代码展示

# Definition for a binary tree node.# class TreeNode:#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = None
class Solution: def sumNumbers(self, root: TreeNode) -> int: self.res = 0 if not root: return self.res self.dfs(root,0) return self.res # 回溯 def dfs(self,root,path): # step 1:修改 path = path*10+root.val # step 2:判断终止条件 if not root.left and not root.right: self.res = self.res+path return # step 3:遍历 左子树 if root.left: self.dfs(root.left,path) # step 3:遍历 右子树 if root.right:            self.dfs(root.right,path)
复杂度计算




运行结果

浏览 8
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报