题目
代码
执行用时:32 ms, 在所有 Python3 提交中击败了98.76% 的用户
内存消耗:16.5 MB, 在所有 Python3 提交中击败了59.19% 的用户
通过测试用例:114 / 114
class Solution:
def dfs(self,root,target):
if not root:
return
self.ans.append(root.val)
if (not root.left and not root.right) and sum(self.ans)==target:
self.rs.append(self.ans.copy())
self.dfs(root.left,target)
self.dfs(root.right,target)
self.ans.pop()
def pathSum(self, root: TreeNode, target: int) -> List[List[int]]:
self.rs=[]
self.ans=[]
self.dfs(root,target)
return self.rs
【方法2】
执行用时:40 ms, 在所有 Python3 提交中击败了82.24% 的用户
内存消耗:16.4 MB, 在所有 Python3 提交中击败了85.98% 的用户
通过测试用例:114 / 114
class Solution:
def dfs(self,root,target):
if not root:
return
self.ans.append(root.val)
target-=root.val
if (not root.left and not root.right) and target==0:
self.rs.append(self.ans.copy())
self.dfs(root.left,target)
self.dfs(root.right,target)
self.ans.pop()
def pathSum(self, root: TreeNode, target: int) -> List[List[int]]:
self.rs=[]
self.ans=[]
self.dfs(root,target)
return self.rs
【刷题|【剑指 Offer】剑指 Offer 34. 二叉树中和为某一值的路径】【方法3】
执行用时:40 ms, 在所有 Python3 提交中击败了82.24% 的用户
内存消耗:16.2 MB, 在所有 Python3 提交中击败了95.29% 的用户
通过测试用例:114 / 114
class Solution:
def pathSum(self, root: TreeNode, target: int) -> List[List[int]]:
if not root:return []
node_pa=dict()
node_pa[root]=None
queue=[root]
ans=[]
while queue:
root=queue.pop(0)
if root.left:
node_pa[root.left]=root
queue.append(root.left)
if root.right:
node_pa[root.right]=root
queue.append(root.right)
if not root.left and not root.right:
temp=[root.val]
while root:
temp.append(root.val)
root=node_pa[root]
temp=temp[::-1][:-1]
if sum(temp)==target:
ans.append(temp)
return ans
推荐阅读
- python|矩阵快速幂算法及相关应用(含python源码)
- #|基于JAVA实现的WEB端UI自动化 -自动化测试简单介绍
- #|她笑了——心里阳光满满(Matlab实现一个太阳心)
- #|送小公主——哆啦A梦(Python代码实现)
- #|她很焦虑,是时候送一波更高级的玫瑰(Python&Matlab实现)
- #|你值得拥有——流星雨下的告白(Python实现)
- #|信息时代——微信防撤回(Python实现)
- #|花仙子——玫瑰(Matlab实现)
- 数学随想|生态学经典(捕食者和被捕食者模型)