题目: 给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。
来源: https://leetcode-cn.com/problems/path-sum-iii/
法一: 自己的代码, 代码超时,原因是计算res的时候,没有用前面的结果,而是每次都重新计算一遍,这个时候一定要把要计算的结果作为参数进行传递,每次都对参数进行计算有几个结果符合.会大大减少计算的次数
# Definition for a binary tree node. class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None class Solution: def pathSum(self, root: TreeNode, su: int) -> int: results = [0] def judge(res): a = [] while res: a.append(res.pop()) if sum(a) == su: results[0] = results[0] + 1 def recursion(root,res): if root is None: return res.append(root.val) # 每次都对res进行求和判断 judge(res[:]) recursion(root.left, res) recursion(root.right, res) res.pop() recursion(root,res=[]) return results[0]