这道求根到叶节点数字之和的题跟之前的求Path Sum 二叉树的路径和很类似,都是利用DFS递归来解,这道题由于不是单纯的把各个节点的数字相加,而是每到一个新的数字,要把原来的数字扩大10倍之后再相加。代码如下:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int sumNumbers(TreeNode root) {
return dfs(root,0);
}
public static int dfs(TreeNode root,int sum){
if(root == null) return 0;
if(root.left == null && root.right == null)
return sum*10 + root.val;
return dfs(root.left,sum*10+root.val) + dfs(root.right,sum*10+root.val);
}
}