题目: 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。

来源: https://leetcode-cn.com/problems/path-sum-ii/

法一: 自己的代码, 没有官方题解

思路: 递归实现,类似前序遍历

# 执行用时 :44 ms, 在所有 python3 提交中击败了99.18% 的用户
# 内存消耗 :14.2 MB, 在所有 python3 提交中击败了98.55%的用户
# Definition for a binary tree node.
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
from typing import List
class Solution:
def pathSum(self, root: TreeNode, sum: int) -> List[List[int]]:
results = []
res= []
s = 0
def recursion(root,s):
# 如果遍历到一个分支的底了,则为空节点,返回True,继续遍历
if root == None:
return True
res.append(root.val)
# 注意不传s不行,全局变量s指向不可变对象,只能在里面调用,不能修改
s = s + root.val
a = recursion(root.left,s)
b = recursion(root.right,s)
# 如果到叶节点了,且和也满足条件,则存储
if a and b:
if s == sum:
results.append(res[:])
s = s - root.val
# 注意这里res是个全局变量,且因为指向可变对象所以可以修改,每次函数结束时,res中的
# 内容不会自定返回到调用前的状态,所以需要出栈来恢复状态
res.pop()
recursion(root,s)
return results
if __name__ == '__main__':
duixiang = Solution() root = TreeNode(8)
a = TreeNode(4)
b = TreeNode(9)
root.left = a
root.right = b al = TreeNode(3)
ar = TreeNode(6)
a.left = al
a.right = ar arl = TreeNode(5)
arr = TreeNode(7)
ar.left = arl
ar.right = arr
sum = 17
a = duixiang.pathSum(root,sum)
print(a)

113路径总和II的更多相关文章

  1. Java实现 LeetCode 113 路径总和 II

    113. 路径总和 II 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = ...

  2. 刷题-力扣-113. 路径总和 II

    113. 路径总和 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/path-sum-ii 著作权归领扣网络所有.商业转载请联系 ...

  3. 113. 路径总和 II

    给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 ...

  4. LeetCode 113. 路径总和 II(Path Sum II)

    题目描述 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / ...

  5. [LeetCode] 113. 路径总和 II

    题目链接 : https://leetcode-cn.com/problems/path-sum-ii/ 题目描述: 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径 ...

  6. 【LeetCode】113. 路径总和 II

    题目 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ ...

  7. LeetCode 113. 路径总和 II C++

    提交结果:内存超100%,用时超69% /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNo ...

  8. 【二叉树-所有路经系列(根->叶子)】二叉树的所有路径、路径总和 II、路径总和、求根到叶子节点数字之和(DFS)

    总述 全部用DFS来做 重点一:参数的设置:为Root,路径字符串,路径List集合. 重点二:步骤: 1 节点为null 2 所有节点的操作 3 叶子结点的操作 4 非叶节点的操作 题目257. 二 ...

  9. LeetCode:路径总和II【113】

    LeetCode:路径总和II[113] 题目描述 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例:给定如下二叉树, ...

随机推荐

  1. django笔记一

    课程介绍 MVC 大部分开发语言中都有MVC框架 MVC框架的核心思想是:解耦 降低各功能模块之间的耦合性,方便变更,更容易重构代码,最大程度上实现代码的重用 m表示model,主要用于对数据库层的封 ...

  2. yum 报错3

    . Contact the upstream for the repository and get them to fix the problem. . Reconfigure the baseurl ...

  3. springmvc框架中的核心对象DispatcherServlet

    SpringMVC是Spring中的模块,它实现了mvc设计模式,首先用户发起请求,请求到达SpringMVC的前端控制器(DispatcherServlet),前端控制器根据用户的url请求处理器映 ...

  4. mysql和oracle的语法差异(网络收集)

    oracle没有offet,limit,在mysql中我们用它们来控制显示的行数,最多的是分页了.oracle要分页的话,要换成rownum. oracle建表时,没有auto_increment,所 ...

  5. Centos7基础优化操作项

    1.基础优化操作项:更新yum源信息第一个:就近使用yum源地址,安装软件更快.curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors. ...

  6. Mysql 查看连接数,状态及最大并发数(转载)

    -- show variables like '%max_connections%'; 查看最大连接数 set global max_connections=1000 重新设置   mysql> ...

  7. sys.argv的意义及用法

    sys.argv的意义 简单来说,sys.argv是一个参数列表,这个列表存放着从外界获取到的参数(可能有多个) 下面以一个例子来详细阐述sys.argv,本次演示在ubuntu环境下运行 新建一个t ...

  8. JQuery的deferred.promise()

    jQuery提供的deferred.promise()方法的作用是,在原来的Deferred 对象上返回另一个 Deferred 对象,即受限制的 Promise 对象,受限制的 Promise 对象 ...

  9. SQL server 获取异常

    一.try...... catch 获取异常信息 /*======================================== 相关错误消 息如下: ERROR_NUMBER() 返回错误号. ...

  10. 5.JavaBean

    JavaBean JSP开发初期HTML,css,java代码混杂在一起,给程序的调试和维护带来很大困难.将与HTML分离并将对象和逻辑java代码封装成类就是一个JavaBean组件. 1.Java ...