剑指offer_二叉树中和为某一值的路径

129 阅读1分钟

输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。

从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

给出二叉树如下所示,并给出num=225
     / \
    4   6
   /   / \
  12  13  6
 /  \    / \
9    1  5   1

输出:[[5,4,12,1],[5,6,6,5]]

code

/**
 * 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 findPath = function(root, sum) {
    const path = []
    const ans = []
    function dfs(root, sum) {
        if(!root) return
        path.push(root.val)
        sum -= root.val
        if(!root.left && !root.right && !sum) ans.push([...path])
        dfs(root.left,sum)
        dfs(root.right,sum)
        path.pop()
    }
    

    dfs(root,sum)
    
    return ans
};