给定一个二叉树,它的每个结点都存放一个 0-9
的数字,每条从根到叶子节点的路径都代表一个数字。
例如,从根到叶子节点路径 1->2->3
代表数字 123
。
计算从根到叶子节点生成的所有数字之和。
说明: 叶子节点是指没有子节点的节点。
示例 1:
输入: [1,2,3]
1
/ \
2 3
输出: 25
解释:
从根到叶子节点路径 1->2 代表数字 12.
从根到叶子节点路径 1->3 代表数字 13.
因此,数字总和 = 12 + 13 = 25.
public class SumNumbers {
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
public int sumNumbers(TreeNode root) {
return dfs(root, "");
}
private int dfs(TreeNode root, String str) {
if (root == null) {
return 0;
}
str += root.val;
if (root.left == null && root.right == null) {
return Integer.valueOf(str);
}
return dfs(root.left, str) + dfs(root.right, str);
}
}