给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。

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

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

    说明: 叶子节点是指没有子节点的节点。

    示例 1:
    **
    输入: [1,2,3]
    1
    / \
    2 3
    输出: 25
    解释:
    从根到叶子节点路径 1->2 代表数字 12.
    从根到叶子节点路径 1->3 代表数字 13.
    因此,数字总和 = 12 + 13 = 25.

    示例 2:
    **
    输入: [4,9,0,5,1]
    4
    / \
    9 0
    / \
    5 1
    输出: 1026
    解释:
    从根到叶子节点路径 4->9->5 代表数字 495.
    从根到叶子节点路径 4->9->1 代表数字 491.
    从根到叶子节点路径 4->0 代表数字 40.
    因此,数字总和 = 495 + 491 + 40 = 1026.

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/sum-root-to-leaf-numbers

    思路:
    用dfs模拟即可
    复杂度分析:
    时间复杂度O(n)
    空间复杂度O(n)

    1. var sumNumbers = function (root) {
    2. if (!root) return 0;
    3. let dfs = (root, sum) => {
    4. if (root === null) return 0;
    5. sum = sum * 10 + root.val;
    6. if (!root.left && !root.right) {
    7. return sum;
    8. }
    9. return dfs(root.left, sum) + dfs(root.right, sum);
    10. };
    11. return dfs(root, 0);
    12. };