题目
Given a binary tree containing digits from
0-9
only, each root-to-leaf path could represent a number.An example is the root-to-leaf path
1->2->3
which represents the number123
.Find the total sum of all root-to-leaf numbers.
For example,
1 / \ 2 3
The root-to-leaf path
1->2
represents the number12
.
The root-to-leaf path1->3
represents the number13
.Return the sum = 12 + 13 =
25
.
方法
使用树的先序遍历进行递归,终止条件是左右子树均为空, 递归函数中,传递了一个临时值,表示到目前为止的值。
public class Solution {
private int sum;
private void preOrder(TreeNode node, int temp) {
if (node != null) {
temp = temp * 10 + node.val;
if (node.left == null && node.right == null) {
sum += temp;
}
preOrder(node.left, temp);
preOrder(node.right, temp);
}
}
public int sumNumbers(TreeNode root) {
if (root == null) {
return 0;
} else {
preOrder(root,0);
return sum;
}
}
}