解题思路
深度优先遍历
用一个变量记录遍历过程,从根节点到当前节点的和
每往下一层就将和乘10
加上当前节点的值
如果是叶节点就返回当前计算的和
不是叶节点就返回递归该节点的左右子节点后的和
代码
class Solution {
public int sumNumbers(TreeNode root) {
return dfs(root, 0);
}
private int dfs(TreeNode root, int sum) {
if (root == null) {
return 0;
}
sum = 10 * sum + root.val;
// 如果是叶节点
if (root.left == null && root.right == null) {
return sum;
}
return dfs(root.left, sum) + dfs(root.right, sum);
}
}