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 number 123
.
Find the total sum of all root-to-leaf numbers.
For example,
1 / 2 3
The root-to-leaf path 1->2
represents
the number 12
.
The root-to-leaf path 1->3
represents
the number 13
.
Return the sum = 12 + 13 = 25
.
以根节点到树叶为一路径 路径上节点值组成一个数 求所有数的和 是典型的深度优先遍历 但是每次进行递归时需要把已经得到的结果传过去 所以另外构造函数 传入 total值 若然后子叶则total*10+root.val继续递归 代码如下:
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public int sumNumbers(TreeNode root) { return sum(0,root); } public int sum(int total,TreeNode root){ if(root==null) return 0; if(root.left==null&&root.right==null){ return total*10+root.val; }else{ return sum(total*10+root.val,root.left)+sum(total*10+root.val,root.right); } } }
原文:http://blog.csdn.net/u012734829/article/details/42493119