題目:113. 路徑總和 II
連結:https://leetcode-cn.com/problems/path-sum-ii
給定一個二叉樹和一個目标和,找到所有從根節點到葉子節點路徑總和等于給定目标和的路徑。
說明: 葉子節點是指沒有子節點的節點。
示例:
給定如下二叉樹,以及目标和 sum = 22,
5
/ \
4 8
/ / \
11 13 4
/ \ / \
7 2 5 1
傳回:
[
[5,4,11,2],
[5,8,4,5]
]
解題:
1、二叉樹周遊,判斷是否遇到葉子節點,與此同時,sum是否和葉子節點的值相同,是則把路徑添加到結果中。
代碼:
# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution(object): def get_sum(self, node, sum, current): cur2 = copy.copy(current) cur2.append(node.val) sum2 = sum - node.val if not node.left and not node.right: if sum2 == 0: self.res.append(cur2) return if node.left: self.get_sum(node.left, sum2, cur2) if node.right: self.get_sum(node.right, sum2, cur2) def pathSum(self, root, sum): """ :type root: TreeNode :type sum: int :rtype: List[List[int]] """ if not root: return [] self.res = [] self.get_sum(root, sum, []) return self.res
複制
PS:刷了打卡群的題,再刷另一道題,并且總結,确實耗費很多時間。如果時間不夠,以後的更新會總結打卡群的題。
PPS:還是得日更呀,總結一下總是好的。