题目:给定0-9仅包含来自数字的二叉树,每个跟到叶路径可以表示数字,一个例子是1->2->3表示数字的root-to-leaf的路径123.求所有根到叶数的总和。叶子是没有子节点的节点。
示例:
思路:运用递归的方法,每个节点都有一个数值,总和就是依据每一个节点的值相加后得到的。因此进行深度递归,每个节点的数值等于上一个节点的数值乘以10加上该节点的数值,如果有子节点,再进行传递,这样,最终返回的数值就是要求的值。
不过有一个问题,这里没有规定该二叉树的深度,如果深度太长,那么会导致结果会超过int类型的数值范围。
代码:
/**
* 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 sum(root, 0);
}
public int sum(TreeNode node,int s)
{
if(node==null)
return 0;
else if(node.left==null&&node.right==null)
return s*10+node.val;
else
return sum(node.left, s*10+node.val)+sum(node.right, s*10+node.val);
}
}