题目:
给定一个二叉树,从根到叶子的所经过的所有节点的值组成一个数,求所有路径数的和;
比如,
1
/ \
2 3
12+13=25
实现:
从上向下求,递归;
根:sum=val;
向下:sum=sum*10+val
如果是叶子,则返回;
非叶子,则左的和+右的和;
代码:
public int sumNumbers(Node node){
int sum=0;
return sumNumber(node,sum);
}
private int sumNumber(Node node, int sum) {
if(node==null){
return 0;
}
sum=sum*10+node.value;
if(node.left==null && node.right==null){
return sum;
}
return sumNumber(node.left,sum)+sumNumber(node.right,sum);
}