题目: 给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。
来源: 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]

改进后的代码不会超时,

# 执行用时 :180 ms, 在所有 python3 提交中击败了93.22% 的用户
# 内存消耗 :33.4 MB, 在所有 python3 提交中击败了9.56%的用户
class Solution:
def pathSum(self, root: TreeNode, su: int) -> int:
results = [0]
def recursion(root,res):
if root is None:
return
# 先计算有几个满足条件的,再传res.切不可先传过去后计算,那样的话慢了一步,
res = [root.val+i for i in res] + [root.val]
results[0] = results[0] + res.count(su)
# res是可变对象,并且是直接传过去了,但由于res = [root.val+i for i in res] + [root.val]
# 中对res重新进行赋值了,所以函数结束调用后,res中的内容并未改变
recursion(root.left, res)
recursion(root.right,res)
recursion(root,res=[])
return results[0]
if __name__ == '__main__':
duixiang = Solution()
root = TreeNode(5)
a = TreeNode(4)
b = TreeNode(11)
c = TreeNode(2)
d = TreeNode(2)
root.left = a
a.left = b
b.left = c
b.right = d
su = 22
a = duixiang.pathSum(root, su)
print(a)

437路径总和III的更多相关文章

  1. 【LeetCode】437. 路径总和 III

    437. 路径总和 III 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点 ...

  2. Java实现 LeetCode 437 路径总和 III(三)

    437. 路径总和 III 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点 ...

  3. Leetcode 437.路径总和III

    路径总和III 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). ...

  4. [LeetCode] 437. 路径总和 III ☆☆☆(递归)

    路径总和 III 描述 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子 ...

  5. 437. 路径总和 III

    方法一:48 ms /* sumUp递归子程序求解以root为根节点的子节点之和为sum的路径数目; pathSum递归部分是把根节点逐一考察,如以root->left,以root->ri ...

  6. leetcode 437. 路径总和 III

    题目描述: 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). 二 ...

  7. [二叉树-根到叶的子路径]路径总和 III (两层递归)

    题目437. 路径总和 III 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父 ...

  8. 437 Path Sum III 路径总和 III

    给定一个二叉树,二叉树的每个节点含有一个整数.找出路径和等于给定数的路径总数.路径不需要从根节点开始,也不需要在叶节点结束,当路径方向必须是向下的(只从父节点到子节点).二叉树不超过1000个节点,节 ...

  9. Leetcode题目437:路径总和III(递归-简单)

    题目描述: 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). 二 ...

随机推荐

  1. js事件总汇

    Mouse 事件 描述onClick                     鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDblClick                鼠标双击事件 on ...

  2. python 安装第三方包

    python环境是Anaconda3安装的,由于项目需要用到git的第三方包,但是在conda自带的环境中没有. 例如使用jieba分词库. 安装的三种方式: (1)全自动安装:`easy_insta ...

  3. mysql向redis导入数据

    数据库结构如下 如果是linux系统下,如此整备数据 SELECT CONCAT( "*10\r\n", '$', LENGTH(redis_cmd), '\r\n',redis_ ...

  4. 阅读之https及加密原理

    HTTPS(全称:Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版. 为什么需要https 使用htt ...

  5. LINUX学习之一基础篇

    1.计算机硬件五大单元:运算器.控制器.存储器.I/O设备 2.CPU种类:精简指令集(RISC)和复杂指令集(CISC) 3.1Byte=8bit,扇区大小为512bytes 4.芯片组通常分为两个 ...

  6. springmvc4.3.7中使用RequestBody,传入json参数时,得到错误415 Unsupported Media Type

    在新建一个maven的项目的时候,当时并非springboot项目,是通过xml来配置的项目.在项目中DispatcherServlet的配置文件中配置了annotation-driven的, < ...

  7. Python 正则表达式Ⅱ

    re.search方法 re.search 扫描整个字符串并返https://www.xuanhe.net/回第一个成功的匹配. 函数语法: 函数参数说明: 匹配成功re.search方法返回一个匹配 ...

  8. 接口headers

    接口headers from-data header: { 'Content-Type':'application/json'},     header: { 'Content-Type':'appl ...

  9. QT:QSS字体设置

    css,qss font-family常用的黑体宋体等字体中英文对照 当qss使用中文设置字体时,无法生效.因为qss不支持中文设置字体,所以下面给出一些常用的黑体宋体字体中英文对照. 微软雅黑: M ...

  10. 计算机网络(九),HTTP简介

    目录 1.超文本传输协议HTTP的主要特点 2.HTTP请求结构 3.HTTP响应结构 4.http请求/响应的步骤 九.HTTP简介 1.超文本传输协议HTTP的主要特点 (1)支持客户/服务器模式 ...