树Path Sum II(递归)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树Path Sum II(递归)相关的知识,希望对你有一定的参考价值。

题目:

Given a binary tree and a sum, find all root-to-leaf paths where each path‘s sum equals the given sum.

For example:
Given the below binary tree and sum = 22,

              5
             /             4   8
           /   /           11  13  4
         /  \    /         7    2  5   1

return

[
   [5,4,11,2],
   [5,8,4,5]
]

思路:

递归求解,只是要保存当前的结果,并且每次递归出来后要恢复递归前的结果,每当递归到叶子节点时就把当前结果保存下来。

/**
 * 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[][]}
 */
var pathSum = function(root, sum) {
    var path=[],res=[];
    if(root==null){
        return [];
    }
    
    path.push(root.val);
    getPath(root,sum,path,res);
    return res;
};

function getPath(root,sum,path,res){
    path=path.concat();
    if(root.left==null&&root.right==null&&root.val==sum){
        res.push(path);
        return;
    }
    if(root.left){
        path.push(root.left.val);
        getPath(root.left,sum-root.val,path,res);
        path.pop();
    }
    if(root.right){
        path.push(root.right.val);
        getPath(root.right,sum-root.val,path,res);
        path.pop();
    }
}

 

以上是关于树Path Sum II(递归)的主要内容,如果未能解决你的问题,请参考以下文章

Path Sum II - LeetCode

LeetCode 113. 路径总和 II(Path Sum II)

LeetCode 113. Path Sum II 20170705 部分之前做了没写的题目

Leetcode 113. Path Sum II

leetcode 113 path Sum II 路径和

LeetCode 113. Path Sum II路径总和 II (C++)