113. 경로 총계 II - 두 갈래 나무의 중차 반복

3006 단어

문제 설명


두 갈래 나무와 목표와 뿌리 노드에서 잎 노드까지의 모든 경로를 찾는 것은 목표와 같은 경로입니다.
설명: 잎 노드는 하위 노드가 없는 노드를 가리킨다.
예: 다음과 같은 두 갈래 트리와 목표와sum=22,
5/\4 8//\11 134/\/\7 2 5 1 반환:
[ [5,4,11,2], [5,8,4,5]]
출처: 리코드(LeetCode) 링크:https://leetcode-cn.com/problems/path-sum-ii

해답

# 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):
        if root == None:
            return []
        result = []
        def backtrack(root, arr, count):
            if root.left == None and root.right == None:
                arr.append(root.val)
                if count + root.val == sum:
                    result.append([])
                    result[-1].extend(arr)
                arr.pop()
                return
            if root.left != None:
                arr.append(root.val)
                count += root.val
                backtrack(root.left, arr, count)
                count -= root.val
                arr.pop()
            if root.right != None:
                arr.append(root.val)
                count += root.val
                backtrack(root.right, arr, count)
                count -= root.val
                arr.pop()
        backtrack(root, [], 0)
        return result

좋은 웹페이지 즐겨찾기