描述
给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。
每条从根节点到叶节点的路径都代表一个数字:
例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。
计算从根节点到叶节点生成的 所有数字之和 。
叶节点 是指没有子节点的节点。
分析
递归遍历树,用一个全局变量StringBuilder记录访问的路径,如果当前结点叶子节点,计算StringBuilder的数值,加入道最终结果中。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
StringBuilder sb = new StringBuilder();
int sum = 0;
public int sumNumbers(TreeNode root) {
if(root == null){
return sum;
}
sb.append(root.val);
if(root.left == null && root.right == null){
sum += Integer.valueOf(sb.toString());
sb.deleteCharAt(sb.length()-1);
return sum;
}
sumNumbers(root.left);
sumNumbers(root.right);
sb.deleteCharAt(sb.length()-1);
return sum;
}
}