路径总和
题目难度显示是简单,但是这道题并不容易,并且背后可以说道的东西不少。多次代码优化的过程让我收获不少,特此记录。
首先分析我最初的思路,考虑从上往下计算,每个节点保存可能的路径和。如,10这节点可以保存[10],5这个节点保存[10,5],3这个节点保存[3,5,10]。如此类推。代码如下:
class Solution(object):
def pathSum(self, root, sum):
"""
:type root: TreeNode
:type sum: int
:rtype: int
"""
node = []
return self.nodepath(node, root, sum)
def nodepath(self,node,root,sum):
count = 0
if not root:
return 0
for i in range(len(node)):
node[i] += root.val
if sum == node[i]:
count += 1
node