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

139 阅读1分钟

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

题目描述

给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。

叶子节点 是指没有子节点的节点。 示例

输入: root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22
输出: [[5,4,11,2],[5,8,4,5]]

解法:

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @param {number} target
 * @return {number[][]}
 */
//  深度优先搜索
var pathSum = function(root, target) {
    const res=[];
    const bfs=(node,sum,temp)=>{
       if(!node){
           return;
       }else{
            sum+=node.val;
            temp.push(node.val);
           if((!( node.left||node.right))&&sum===target){
              res.push([...temp]);
           }else if( node.left||node.right){
               node.left&&bfs(node.left,sum,temp);
               node.right&&bfs(node.right,sum,temp);
           }
           sum-=temp.pop()
       }
    }
    bfs(root,0,[]);
    return res;
};