Day 48
题目描述
思路
我们利用sum这个全局变量来保存总和值,递归函数sum来计算每个根到叶子节点路径所代表的数,由于我们需要遍历到每条根到叶子节点的路径,所有我采取了前序遍历,如果不是叶子节点,就计算到该节点代表的值,就是qian*10+当前节点的值,qian的意思就是根到这个节点路径上的值(代表的数),到根节点就先获取到这个值,然后加到sum即可。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public int sum=0;//保存总和
public void sums(TreeNode root,int qian){
if(root==null){
return;
}
if(root.left==null&&root.right==null){
qian=qian*10+root.val;
sum+=qian;
}
else{
qian=qian*10+root.val;
}
sums(root.left,qian);
sums(root.right,qian);
}
public int sumNumbers(TreeNode root) {//就是前序遍历
if(root.left==null&&root.right==null){//特殊处理根就是叶子节点
return root.val;
}
sums(root.left,root.val);
sums(root.right,root.val);
return sum;
}
}