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

题目:输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。(题目来自剑指Offer)


实例:


解法:递归

/**
 * @desc 二叉树中和为某一值的路径
 * @param {TreeNode} root
 * @param {number} sum
 * @return {number[][]}
 */
let pathSum = function(root, sum) {
  if (!root) return [];
  let res = [];
  let _pathSun = (root, sum, path) => {
    if (!root) return;
    path = [...path, root.val]; //浅拷贝
    // 无左右节点说明已经为1条路径,sum等于叶子节点的值说明sum为该路径的值。
    if (!root.left && !root.right && sum === root.val) { 
      res.push(path);
      return;
    }
    _pathSun(root.left, sum - root.val, path); 
    _pathSun(root.right, sum - root.val, path);
  };
  _pathSun(root, sum, []);
  return res;
};

评论(0)

评论