1 题目描述

2 解题思路

2.1BFS 广度优先搜索

我们设计一个这样的队列

队列的每个元素是一个三元数组:从根节点到当前点的路径总和+当前节点+从根节点到当前节点的路径

每次我们从队列中弹出一个元素的时候,我们考虑这个元素所对应的节点是不是叶子节点,如果是的话,判断当前路径总和是否是我们的target。如果是,将这一组路径加到要返回的列表中;如果不是,什么也不做

否则,看此节点有没有左右儿子节点,有的话,将对应的元素送入队列

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def pathSum(self, root: Optional[TreeNode], targetSum: int) -> List[List[int]]:if(root==None):return Nonetmp=[[root.val,root,[root.val]]]ret=[]while(tmp):x=tmp.pop(0)if(x[1].right==None and x[1].left==None):#判断是否是叶子节点print(x)if(x[0]==targetSum):#判断叶子节点的路径总和是否是targetret.append(x[2])elif(x[1].right==None):tmp.append([x[0]+x[1].left.val,x[1].left,x[2]+[x[1].left.val]])elif(x[1].left==None):tmp.append([x[0]+x[1].right.val,x[1].right,x[2]+[x[1].right.val]])else:tmp.append([x[0]+x[1].left.val,x[1].left,x[2]+[x[1].left.val]])tmp.append([x[0]+x[1].right.val,x[1].right,x[2]+[x[1].right.val]])#是否有左右儿子,有的话,将他们对应的元素加入队列中return(ret)

2.2 DFS深度优先遍历

和BFS类似,DFS的参数也有三个

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def pathSum(self, root: Optional[TreeNode], targetSum: int) -> List[List[int]]:if(root==None):return Noneret=[]def dfs(val,node,lst):#print(val,node,lst)#print('\n')if(node.left==None and node.right==None and val==targetSum):             ret.append(lst)elif(node.left==None and node.right==None and val!=targetSum):passif(node.right!=None):dfs(val+node.right.val,node.right,lst+[node.right.val])if(node.left!=None):dfs(val+node.left.val,node.left,lst+[node.left.val])dfs(root.val,root,[root.val])return(ret)

文巾解题 113. 路径总和 II相关推荐

  1. LeetCode 112. 路径总和 、113. 路径总和 II 思考分析

    目录 112. 路径总和 题目 递归解 递归解,其他人的解法 迭代解,其他人的解法 113. 路径总和 II 题目 递归解 递归解,参考别人的思路 112. 路径总和 题目 给定一个二叉树和一个目标和 ...

  2. 113. 路径总和 II golang

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

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

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

  4. 文巾解题 477. 汉明距离总和

    1 题目描述 2 解题思路 2.1 暴力两两比较 两个数字之间的汉明距离可以使用 文巾解题 461. 汉明距离_刘文巾的博客-CSDN博客 中的任何一种方法,但是因为这个是两两比较,时间复杂度比较高, ...

  5. leetcode 113. 路径总和 II

    难度:中等 频次:60 题目: 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径. 叶子节点 是指没有子节点的节点. 解 ...

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

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

  7. LeetCode 113. 路径总和 II(回溯)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉 ...

  8. 54. Leetcode 113. 路径总和 II (二叉树-二叉树路径和)

    给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径.叶子节点 是指没有子节点的节点.示例 1: 输入:root = [5, ...

  9. leetcode 113. 路径总和 II(Path Sum II)

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

最新文章

  1. OpenCV读写图像文件解析
  2. 福师2021计算机应用基础,2021福师《计算机应用基础》在线作业二【满分答案】...
  3. ubuntu下7z文件的解压方法
  4. springclould feign客户端添加全局参数
  5. 字符串中斜杠换行注意事项之-多余空格
  6. 不让复制是不可能的----js获取选中文字
  7. python中函数提高代码执行速度吗_为什么Python代码在一个函数中运行得更快?
  8. 上传本地文件到gitlab 项目里的某个文件夹
  9. F - Parenthesis Checking
  10. k8s ubuntu cni_手把手教你使用RKE快速部署K8S集群并部署Rancher HA
  11. 【nodejs】让nodejs像后端mvc框架(asp.net mvc)一样处理请求--请求处理函数装饰器注册篇(5/8)【controller+action】...
  12. java基于http协议编程_网络传输协议(http协议)
  13. 【Linux】C语言——贪吃蛇
  14. 启动tomcat8时出现springfox.documentation.spi.service.contexts.OperationContext.headers()Ljava/util/Set;错误
  15. u盘芯片 测试软件,U盘芯片检测工具(Chip Genius)
  16. arcgis运行慢_ArcGIS Desktop打开慢的解决办法
  17. tplink软件升级有用吗_tplink路由器固件更新的方法
  18. 组态王 6.55 启停plc_PLC编程进料PLC编程项目
  19. Excel宏的录制与调用
  20. 可道云 docker 群晖_群晖NAS安装影视客户端新手教程,手把手教你NAS怎么下载电影...

热门文章

  1. SpringMVC学习笔记四:数据绑定
  2. servlet第2讲(下集)----创建servlet实例(继承HttpServlet)
  3. Linux运维之网络运维
  4. win32 数据类型 vs c#
  5. 在sae中使用jfinal框架开发web工程遇到的问题
  6. AsyncTask类的使用
  7. 使用8位字节的编码格式将字节流安全的转换成String
  8. KB929828:在Vista中使用Sysprep /generalize时出错
  9. github入门必备概念
  10. ubuntu 编译内核并更换