437路径总和III
题目: 给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。
来源: 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的更多相关文章
- 【LeetCode】437. 路径总和 III
437. 路径总和 III 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点 ...
- Java实现 LeetCode 437 路径总和 III(三)
437. 路径总和 III 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点 ...
- Leetcode 437.路径总和III
路径总和III 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). ...
- [LeetCode] 437. 路径总和 III ☆☆☆(递归)
路径总和 III 描述 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子 ...
- 437. 路径总和 III
方法一:48 ms /* sumUp递归子程序求解以root为根节点的子节点之和为sum的路径数目; pathSum递归部分是把根节点逐一考察,如以root->left,以root->ri ...
- leetcode 437. 路径总和 III
题目描述: 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). 二 ...
- [二叉树-根到叶的子路径]路径总和 III (两层递归)
题目437. 路径总和 III 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父 ...
- 437 Path Sum III 路径总和 III
给定一个二叉树,二叉树的每个节点含有一个整数.找出路径和等于给定数的路径总数.路径不需要从根节点开始,也不需要在叶节点结束,当路径方向必须是向下的(只从父节点到子节点).二叉树不超过1000个节点,节 ...
- Leetcode题目437:路径总和III(递归-简单)
题目描述: 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). 二 ...
随机推荐
- 团队作业-Beta冲刺(周四)
一. 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/ 这个作业要求在哪里 https://edu.c ...
- detect 导图
https://www.zhihu.com/question/356551927/answer/919612766 知乎上看到的,不错
- 【AGC010 C】Cleaning
题意 有一棵 \(n\) 个点的树,第 \(i\) 个节点有 \(a_i\) 个石子. 每次都可以选择一对不同的叶子节点,这对叶子节点路径上的所有点都必须要有石子.然后去掉这两个叶子节点路径上的每个节 ...
- 双向链表/list
双向链表结构如下 双向链表结构中元素在内存中不是紧邻空间,而是每个元素中存放上一个元素和后一个元素的地址 第一个元素称为头(head)元素,前连接(前置指针域)为nil 最后一个元素称为尾(foot) ...
- echarts-all.js:1 Uncaught TypeError: Cannot read property 'getAttribute' of null
转载:https://blog.csdn.net/you23hai45/article/details/51595108 由于echarts图形ID是由后台传输过来的,并且是根据图形数据一起传过来,出 ...
- mysql 在gtid环境下缺少一部分binlog部署从库
我的环境: 有两台linux服务器 一台是192.168.1.1 mysql 端口3301 一台是192.168.1.2 mysql 端口3303 要讨论如何恢复从库,我们得先来了解如下一些概 ...
- keystonejs实战之页头页脚
前两篇介绍了入门相关知识及对keystonejs整体可用性评估,这篇介绍下开始实际运用中的页头页脚部分,因为马上项目忙了,这个先匆匆的作个收尾. 不管是用WordPress还是其他CMS系统,应用最宽 ...
- Spring MVC 基于AnnotationFormatterFactory接口实现自定义的规则
1.创建一个类来实现AnnotationFormatterFactory接口 代码: package com.oukele.CustomAnnotation; import com.oukele.mo ...
- 一个python生成器的使用
def myegg(retlist): for i in retlist: rec = yield i mydict = [ {}, {}, {}, ] b = myegg(mydict) obj = ...
- 【Python网络爬虫三】 爬取网页新闻
学弟又一个自然语言处理的项目,需要在网上爬一些文章,然后进行分词,刚好牛客这周的是从一个html中找到正文,就实践了一下.写了一个爬门户网站新闻的程序 需求: 从门户网站爬取新闻,将新闻标题,作者,时 ...