题目大意:给定一个二叉树,每个节点包含一个0-9的数字,每个根到叶子节点都可以组成一个数,求所有根到叶子节点构成的数的总和。
理解:1)根到叶子节点构成的数,可以采取每次将其左右孩子(如果有)的值更新为根的值*10再加上左右孩子的节点值。
2)采用先根遍历的方法。
实现:
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
private int res = 0;
public int sumNumbers(TreeNode root) {
if(root == null) return 0;
if(root.left == null && root.right == null) {
res += root.val;
return res;
}
if(root.left != null) {
root.left.val += root.val*10;
sumNumbers(root.left);
}
if(root.right != null) {
root.right.val += root.val*10;
sumNumbers(root.right);
}
return res;
}
}