题目描述
输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。
解题思路
从根节点出发,寻找一条到叶结点的路径,路径上的值之和等于输入整数。由此可以知道是树的深度遍历,并且可能存在零条,一条,多条路径,需要维护一个结果数组来记录下所有可能的路径,详细见代码。
Code
/* function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
} */
function FindPath(root, expectNumber)
{
// write code here
if(!root) return [];
let result=[];
var res=[];
recur(root,expectNumber,res,result);
return result;
}
function recur(node,num,res,result){
if(!node) return;
res=[...res,node.val];
if(!node.left&&!node.right&&node.val==num)
result.push(res);
if(node.left)
recur(node.left,num-node.val,res,result);
if(node.right)
recur(node.right,num-node.val,res,result);
}
运行环境:JavaScript (V8 6.0.0)
运行时间:12ms
占用内存:5244k