文巾解题 113. 路径总和 II
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相关推荐
- LeetCode 112. 路径总和 、113. 路径总和 II 思考分析
目录 112. 路径总和 题目 递归解 递归解,其他人的解法 迭代解,其他人的解法 113. 路径总和 II 题目 递归解 递归解,参考别人的思路 112. 路径总和 题目 给定一个二叉树和一个目标和 ...
- 113. 路径总和 II golang
113. 路径总和 II 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = ...
- Java实现 LeetCode 113 路径总和 II
113. 路径总和 II 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = ...
- 文巾解题 477. 汉明距离总和
1 题目描述 2 解题思路 2.1 暴力两两比较 两个数字之间的汉明距离可以使用 文巾解题 461. 汉明距离_刘文巾的博客-CSDN博客 中的任何一种方法,但是因为这个是两两比较,时间复杂度比较高, ...
- leetcode 113. 路径总和 II
难度:中等 频次:60 题目: 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径. 叶子节点 是指没有子节点的节点. 解 ...
- 【Leetcode】113. 路径总和 II
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = 22, 5 ...
- LeetCode 113. 路径总和 II(回溯)
文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉 ...
- 54. Leetcode 113. 路径总和 II (二叉树-二叉树路径和)
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径.叶子节点 是指没有子节点的节点.示例 1: 输入:root = [5, ...
- leetcode 113. 路径总和 II(Path Sum II)
目录 题目描述: 示例: 解法: 题目描述: 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及 ...
最新文章
- OpenCV读写图像文件解析
- 福师2021计算机应用基础,2021福师《计算机应用基础》在线作业二【满分答案】...
- ubuntu下7z文件的解压方法
- springclould feign客户端添加全局参数
- 字符串中斜杠换行注意事项之-多余空格
- 不让复制是不可能的----js获取选中文字
- python中函数提高代码执行速度吗_为什么Python代码在一个函数中运行得更快?
- 上传本地文件到gitlab 项目里的某个文件夹
- F - Parenthesis Checking
- k8s ubuntu cni_手把手教你使用RKE快速部署K8S集群并部署Rancher HA
- 【nodejs】让nodejs像后端mvc框架(asp.net mvc)一样处理请求--请求处理函数装饰器注册篇(5/8)【controller+action】...
- java基于http协议编程_网络传输协议(http协议)
- 【Linux】C语言——贪吃蛇
- 启动tomcat8时出现springfox.documentation.spi.service.contexts.OperationContext.headers()Ljava/util/Set;错误
- u盘芯片 测试软件,U盘芯片检测工具(Chip Genius)
- arcgis运行慢_ArcGIS Desktop打开慢的解决办法
- tplink软件升级有用吗_tplink路由器固件更新的方法
- 组态王 6.55 启停plc_PLC编程进料PLC编程项目
- Excel宏的录制与调用
- 可道云 docker 群晖_群晖NAS安装影视客户端新手教程,手把手教你NAS怎么下载电影...