Skip to content
On this page

129. 求根节点到叶节点数字之和

原题链接:LeetCode 129. 求根节点到叶节点数字之和

题目描述

给你一个二叉树的根节点 root ,树中每个节点都存放有一个 09 之间的数字。

每条从根节点到叶节点的路径都代表一个数字:

- 例如,从根节点到叶节点的路径 `1 -> 2 -> 3` 表示数字 `123` 。

计算从根节点到叶节点生成的 所有数字之和

叶节点 是指没有子节点的节点。

示例 1:

1->2

示例 2:

4->9->5

提示:

- 树中节点的数目在范围 `[1, 1000]` 内

0 
- 树的深度不超过 `10`

难度: Medium


题解代码

javascript
/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number}
 */
var sumNumbers = function(root) {
  const ret = []
  const vals = []
  dfs(root, vals, ret)
  return sum(ret)
};

function dfs (root, vals, ret) {
  if (!root) return
  vals.push(root.val)
  if (!root.left && !root.right) {
    ret.push(toNumber(vals))
  }
  dfs(root.left, [...vals], ret)
  dfs(root.right, [...vals], ret)
}

function toNumber (nums) {
  let ret = 0
  for (let i = 0; i < nums.length; i++) {
    ret += nums[i] * Math.pow(10, nums.length - i - 1)
  }
  return ret
}

function sum (nums) {
  return nums.reduce((total, cur, index, nums) => {
    return cur + total
  }, 0)
}

技术文档集合