Skip to content

Latest commit

 

History

History

113

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Given the root of a binary tree and an integer targetSum, return all root-to-leaf paths where each path's sum equals targetSum.

A leaf is a node with no children.

 

Example 1:

Input: root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22
Output: [[5,4,11,2],[5,8,4,5]]

Example 2:

Input: root = [1,2,3], targetSum = 5
Output: []

Example 3:

Input: root = [1,2], targetSum = 0
Output: []

 

Constraints:

  • The number of nodes in the tree is in the range [0, 5000].
  • -1000 <= Node.val <= 1000
  • -1000 <= targetSum <= 1000

Companies:
Facebook, Amazon

Related Topics:
Backtracking, Tree, Depth-First Search, Binary Tree

Similar Questions:

Solution 1.

// OJ: https://leetcode.com/problems/path-sum-ii/
// Author: github.com/lzl124631x
// Time: O(N)
// Space: O(H)
class Solution {
    vector<vector<int>> ans;
    vector<int> tmp;
    void dfs(TreeNode *root, int target) {
        if (!root) return;
        tmp.push_back(root->val);
        target -= root->val;
        if (target == 0 && !root->left && !root->right) ans.push_back(tmp);
        dfs(root->left, target);
        dfs(root->right, target);
        tmp.pop_back();
    }
public:
    vector<vector<int>> pathSum(TreeNode* root, int target) {
        dfs(root, target);
        return ans;
    }
};