题解 | #JZ 34二叉树中和为某一值的路径(二)#
二叉树中和为某一值的路径(二)
http://www.nowcoder.com/practice/b736e784e3e34731af99065031301bca
```/* function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
} */
function FindPath(root, expectNumber)
{
// write code here
//dfs深度优先搜索,记录每一条路径的和值,与目标值比较,相同将该路径推入resArr
if(root===null){return 0}
let resArr=[]
let sum=0
let tempArr=[]
dfs(root,expectNumber,tempArr,sum,resArr)
return resArr
function dfs(root,expectNumber,tempArr,sum,resArr){
tempArr.push(root.val)
sum+=root.val
if(root.left===null&&root.right===null&&sum===expectNumber){resArr.push(tempArr.slice(0))} //注意深拷贝
if(root.left){dfs(root.left,expectNumber,tempArr,sum,resArr)} //注意每次都要把变量传递进去
if(root.right){dfs(root.right,expectNumber,tempArr,sum,resArr)}
tempArr.pop()
}
}
module.exports = {
FindPath : FindPath
};