물음표 살인마의 개발블로그

알고리즘 문제/Leetcode

113. Path Sum II

BEstyle 2023. 3. 16. 03:11

Given the root of a binary tree and an integer targetSum, return all root-to-leaf paths where the sum of the node values in the path equals targetSum. Each path should be returned as a list of the node values, not node references.

A root-to-leaf path is a path starting from the root and ending at any leaf node. 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]]
Explanation: There are two paths whose sum equals targetSum:
5 + 4 + 11 + 2 = 22
5 + 8 + 4 + 5 = 22

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
#

'''
1. 아이디어 :

2. 시간복잡도 :

3. 자료구조 :

'''


# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def pathSum(self, root: Optional[TreeNode], targetSum: int) -> List[List[int]]:
        ans=[]

        def dfs(node, total, path):
            path.append(node.val)
            if not node.left and not node.right:
                if total+node.val==targetSum:
                    ans.append(path.copy())

            if node.left:
                dfs(node.left, total+node.val, path)

            if node.right:
                dfs(node.right, total+node.val, path)
            path.pop()

        if root:
            dfs(root, 0, [])
        return ans

'알고리즘 문제 > Leetcode' 카테고리의 다른 글

207. Course Schedule  (0) 2023.03.19
129. Sum Root to Leaf Numbers  (0) 2023.03.16
417. Pacific Atlantic Water Flow  (1) 2023.03.15
695. Max Area of Island  (0) 2023.03.13
79. Word Search  (0) 2023.03.05