129 Sum Root to Leaf Numbers

给定仅包含0 - 9的数字二叉树,求其根节点到叶节点的路径表示所有数字之和。

递归与回溯的区别:
递归是一种算法结果,回溯是一种算法思想,一个递归是在函数中调用函数本身来解决问题,回溯是通过不同的尝试来生成问题的解,类似于穷举,但是和穷举不同的是回溯会简枝,对已经知道错误的结果没有必要再枚举下去。

深度优先遍历,回溯法实现

  • Runtime: 80 ms, faster than 69.83%
  • Memory Usage: 37.4 MB, less than 70.97%
/**
 * 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) {
    return dfs(root, 0)
};
var dfs = function(node, res) {
    if(!node) return 0
    res = res * 10 + node.val
    if(!node.left && !node.right) return res
    return dfs(node.left, res) + dfs(node.right, res)
}

你可能感兴趣的:(129 Sum Root to Leaf Numbers)