pwstrick / daily

一份搜集的前端面试题目清单、面试相关以及各类学习的资料(不局限于前端)
2.39k stars 242 forks source link

路径总和 II #1067

Open pwstrick opened 4 years ago

pwstrick commented 4 years ago

113. 路径总和 II

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @param {number} sum
 * @return {number[][]}
 */
let results;
var pathSum = function(root, sum) {
    if(!root)
        return [];
    results = [];
    let route = [];
    dfs(root, route, sum);
    return results;
};
function dfs(root, route, sum) {
    if(!root.left && !root.right) {     //根结点
        route.push(root.val);           //插入结点
        if(route.reduce((arr, cur) => arr+=cur) == sum)
            results.push([...route]);
        route.pop();                    //移除结点
        return;
    }
    route.push(root.val);               //选择
    root.left && dfs(root.left, route, sum);
    root.right && dfs(root.right, route, sum);
    route.pop();                        //撤销
}