[129] 求根节点到叶节点数字之和
details
遍历所有子路径,把节点转成 number 类型 再求和相加
var sumNumbers = function (root) {
let path = [];
dfs('', root);
function dfs(str, node) {
if (node === null) return;
str += node.val;
if (node.left === null && node.right === null) {
path.push(str);
} else {
dfs(str, node.left);
dfs(str, node.right);
}
}
return path.reduce((acc, str) => {
acc += Number(str);
return acc;
}, 0);
};
遍历的时候同步相加
var sumNumbers = function (root) {
return dfs(root, 0);
function dfs(node, sum) {
if (node === null) return 0;
sum = sum * 10 + node.val;
if (node.left === null && node.right === null) {
return sum;
}
return dfs(node.left, sum) + dfs(node.right, sum);
}
};