-
题目链接 https://leetcode-cn.com/problems/sum-root-to-leaf-numbers/submissions/
-
题目描述
-
给定一个二叉树,它的每个结点都存放一个
0-9
的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径
1->2->3
代表数字123
。计算从根到叶子节点生成的所有数字之和。
说明: 叶子节点是指没有子节点的节点。
-
输入: [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
.
-
-
解题思路
- 此题DFS和BFS皆可,我用的是BFS(大概是因为不想递归吧)。用一个queue来做BFS, queue中的元素为某一节点以及该节点的节点数字。
- 节点的左右子节点的节点数字 等于 该节点的节点数字 * 10 + 子节点的值
- 当节点为叶子节点时其节点数字就是我们需要的一个值
-
代码
- python
from collections import deque class Solution: def sumNumbers(self, root: TreeNode) -> int: if not root: return 0 q = deque() q.append([root, root.val]) res = 0 while q: cur = q.popleft() if not cur[0].left and not cur[0].right: res += cur[1] else: if cur[0].left: q.append([cur[0].left, cur[1] * 10 + cur[0].left.val]) if cur[0].right: q.append([cur[0].right, cur[1] * 10 + cur[0].right.val]) return res
- python
-
总结
leetcode 129. 求根到叶子节点数字之和
最新推荐文章于 2022-09-08 08:58:41 发布