LeetCode 113 [Path Sum II]

1427 단어

원제


두 갈래 나무와sum를 제시하여 모든 존재하는 뿌리 노드에서 잎 노드까지의 경로를 찾아낸다. 만약에 경로가sum와 같다면
예는 다음과 같다. 두 갈래 나무와sum=22
              5
             / \
            4   8
           /   / \
          11  13  4
         /  \    / \
        7    2  5   1

되돌아오다
[
   [5,4,11,2],
   [5,8,4,5]
]

문제 풀이 사고방식

  • 두 갈래 나무가 두루 다닌다
  • helper 함수는subSum,path를 저장하고 노드가 루트 노드이고sum와 같을 때res에 이 순간의path를 추가합니다

  • 전체 코드

    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution(object):
        def pathSum(self, root, sum):
            """
            :type root: TreeNode
            :type sum: int
            :rtype: List[List[int]]
            """
            res = []
            if not root:
                return res
            self.helper(root, [], 0, sum, res)
            return res
            
        def helper(self, root, path, subSum, sum, res):
            if root.left == None and root.right == None:
                if subSum + root.val == sum:
                    res.append(path + [root.val])
            if root.left:
                self.helper(root.left, path + [root.val], subSum + root.val, sum, res)
            if root.right:
                self.helper(root.right, path + [root.val], subSum + root.val, sum, res)
            
    

    좋은 웹페이지 즐겨찾기