题目
给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。 例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。
说明: 叶子节点是指没有子节点的节点。
示例 1: 输入: [1,2,3] 1 / 2 3 输出: 25 解释: 从根到叶子节点路径 1->2 代表数字 12. 从根到叶子节点路径 1->3 代表数字 13. 因此,数字总和 = 12 + 13 = 25.
注意点
注意:该题不需要使用回溯是因为参数sumTemp为基础数据类int,所以sumTemp不会因为其他函数的修改而修改。
实现
class Solution {
int sum
= 0;
public int sumNumbers(TreeNode root
) {
dfs(root
, 0);
return sum
;
}
public void dfs(TreeNode root
, int sumTemp
) {
if (root
== null
) {
return;
}
sumTemp
= sumTemp
* 10 + root
.val
;
if (null
== root
.left
&& null
== root
.right
) {
sum
+= sumTemp
;
return;
}
dfs(root
.left
, sumTemp
);
dfs(root
.right
, sumTemp
);
}
}