剑指offer24-二叉树中和为某一值的路径
题目描述
输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)
const FindPath = (root, expectNumber) => {
if(!root) return [];
const result = [];
const temp = [];
calSum(root, 0, temp);
function calSum(data, total, output){
total += data.val;
temp.push(data.val);
if(total == expectNumber && data.left == null && data.right == null) result.push(temp.slice(0));
if(data.left != null) calSum(data.left, total, output);
if(data.right != null) calSum(data.right, total, output);
temp.pop();
}
return result;
};
本题类型:树,动态规划
解析:
此题需要用动态规划思想解决。每当新增加一个数,先将这个数暂时存起来,然后计算增加这个数字之后是否达到了目标数值。如果达到且没有子节点了,则输入进result数组。否则则递归查询左右子树的值。在最后,如果已依旧没有找到符合条件的路径,则这个节点不合适,需要将此节点的数值弹出。
疑惑:
在箭头函数的内部,还能否使用额外的箭头函数,作为辅助的函数?需要进行研究。