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;}
}