本文主要是介绍Leetcode——113. 路径总和 II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。
说明: 叶子节点是指没有子节点的节点。
示例:
给定如下二叉树,以及目标和 sum = 22,
5/ \4 8/ / \11 13 4/ \ / \7 2 5 1
返回:
[
[5,4,11,2],
[5,8,4,5]
]
class Solution:def pathSum(self, root, sum):""":type root: TreeNode:type sum: int:rtype: List[List[int]]"""result = list()if root == None:return resultif not root.left and not root.right and sum == root.val:result.append([root.val])return resultleft = self.pathSum(root.left, sum - root.val)for i in left:i.insert(0, root.val)result.append(i)right = self.pathSum(root.right, sum - root.val)for i in right:i.insert(0, root.val)result.append(i)return result
用这种方法会报错int没有insert,问了大佬后发现第一个left之所以可以insert是因为是treenode类型的,后面是int数值类型的,不可能会有insert,所以不适合用这种解法
def pathSum(self,root,sum):self.auxPathSum(root, sum, [], res)return resdef auxPathSum(self,root,sum,cur_list,cur_lists):if not sum:return if sum == 0 and not root.left and not root.right:cur_lists.append(cur_list + [root.val])returnif root.left:self.auxPathSum(root.left, sum, cur_list + [root.val], cur_lists) if root.right:self.auxPathSum(root.right,sum,cur_list + [root.val],cur_lists)
这篇关于Leetcode——113. 路径总和 II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!