路径总和 II
JesseZhao1990 opened this issue · 0 comments
JesseZhao1990 commented
/**
* 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) {
function loop(root,sum){
var res = [];
if(root === null) return res;
if(root.left === null && root.right === null){
res.push({currentSum:root.val,arr:[root.val]})
return res;
}
var leftRes = loop(root.left,sum);
for(var i=0;i<leftRes.length;i++){
var currentSum = leftRes[i].currentSum+root.val;
leftRes[i].arr.splice(0,0,root.val)
res.push({currentSum:currentSum,arr:leftRes[i].arr})
}
var rightRes = loop(root.right,sum);
for(var i=0;i<rightRes.length;i++){
var currentSum = rightRes[i].currentSum + root.val;
rightRes[i].arr.splice(0,0,root.val);
res.push({currentSum:currentSum,arr:rightRes[i].arr})
}
return res;
}
return loop(root,sum)
.filter(item=>{
return item.currentSum === sum
})
.map(item=>item.arr);
};
解题思路:递归调用。计算一个节点左子树的字符串数组,和右子树的字符串数组,并和本节点的值串联起来,记录累加的值。
leetcode 原题地址:https://leetcode-cn.com/problems/path-sum-ii/description/
