剑指offer

24-二叉树中和为某一值的路径

2020-05-18  本文已影响0人  马甲要掉了

题目描述

输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

分析

这题基本上一看就知道应该深度遍历整个树,并且把已经走过的节点的和与期望值作比较就行,如果走到底还不符合要求的话,就要回退值。

代码:

/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */
function FindPath(root, expectNumber)
{
    // write code here
    const list = [];
    const listAll = [];
    return findPath(root,expectNumber,list,listAll);
}
function findPath(root,expectNumber,list,listAll){
    if(root == null){
        return listAll;
    }
    const flag = expectNumber - root.val;
    list.push(root.val);
    if(root.left==null && root.right==null && flag==0 ){
        listAll.push(Array.of(...list));   
    }
    findPath(root.left,flag,list,listAll);
    findPath(root.right,flag,list,listAll);
    list.pop();
    return listAll
}

说明

Array.of() 方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。

Array.of() 和 Array 构造函数之间的区别在于处理整数参数:Array.of(7) 创建一个具有单个元素 7 的数组,而 Array(7) 创建一个长度为7的空数组(注意:这是指一个有7个空位(empty)的数组,而不是由7个undefined组成的数组)。

Array.of(7);       // [7] 
Array.of(1, 2, 3); // [1, 2, 3]

Array(7);          // [ , , , , , , ]
Array(1, 2, 3);    // [1, 2, 3]
上一篇 下一篇

猜你喜欢

热点阅读