这篇文章是程序自动发表的,详情可以见
这里
href="http://ounix1xcw.bkt.clouddn.com/github.markdown.css" rel="stylesheet">
href="http://ounix1xcw.bkt.clouddn.com/github.markdown.css" rel="stylesheet">
这是leetcode的第437题--Path Sum III
题目 You are given a binary tree in which each node contains an integer value.
Find the number of paths that sum to a given value.
The path does not need to start or end at the root or a leaf, but it must go downwards (traveling only from parent nodes to child nodes). 思路 可以自顶向下传递,为了避免反复求和,可传递路径的前缀和,而且瑶注意不能重复求相同的路径,所以可以在每个节点处,前缀和减去前面所有的节点的前缀和,应该以0开始
show me the code
# 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): """ :type root: TreeNode :type sum: int :rtype: int """ if not root:return 0 self.sum = sum self.total =0 self.preOrder(root,[0],0) return self.total def preOrder(self,root,path,n): tmp =root.val path[-1] for i in path: if tmp -i ==self.sum: self.total =1 path.append(tmp) if root.left:self.preOrder(root.left,list(path),n) if root.right:self.preOrder(root.right,list(path),n)