/**
* 113. 路径总和 II
* @author wsq
* @date 2020/09/26
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。
说明: 叶子节点是指没有子节点的节点。
示例:
给定如下二叉树,以及目标和 sum = 22,
5
/ \
4 8
/ / \
11 13 4
/ \ / \
7 2 5 1
返回:
[
[5,4,11,2],
[5,8,4,5]
]
链接:https://leetcode-cn.com/problems/path-sum-ii
*/
package com.wsq.tree;
import java.util.ArrayList;
import java.util.List;
//Definition for a binary tree node.
class TreeNode {
Integer val;
TreeNode left;
TreeNode right;
TreeNode(Integer x) { val = x; }
}
public class PathSum {
private List<List<Integer>> ansList = new ArrayList();
private List<Integer> pathList = new ArrayList();
/**
* 递归走完每一个分支
* @param root
* @param sum
* @return
*/
public List<List<Integer>> pathSum(TreeNode root, int sum) {
dfs(root, sum);
return ansList;
}
private void dfs(TreeNode root, int sum) {
if(root == null) {
return;
}
// TODO Auto-generated method stub
pathList.add(root.val);
int nextSum = sum - root.val;
if(nextSum == 0 && root.left == null && root.right == null) {
ansList.add(new ArrayList<>(pathList));
}else {
dfs(root.left, nextSum);
dfs(root.right, nextSum);
}
pathList.remove(pathList.size() - 1);
}
/**
* 不是满二叉树,会报错。。。
* @param a
* @param pos
* @return
*/
public static TreeNode buildTree(Integer[] a, int pos) {
if(pos >= a.length || a[pos] == null) {
return null;
}
TreeNode root = new TreeNode(a[pos]);
root.left = buildTree(a, 2 * pos + 1);
root.right = buildTree(a, 2 * pos + 2);
return root;
}
public static void main(String[] args) {
Integer[] a = {1,-2,-3,1,3,-2,null,-1};
TreeNode root = buildTree(a, 0);
int sum = -1;
PathSum ps = new PathSum();
List<List<Integer>> ans = ps.pathSum(root, sum);
for(List<Integer> list: ans) {
for(Integer i: list) {
System.out.print(i + " ");
}
System.out.println();
}
}
}
相关推荐
GAN模型中的常见变体有哪些,如DCGAN、WGAN和CGAN等?
生成对抗网络(GAN)是一种强大的深度学习模型,它由生成器和判别器两个网络组成,通过对抗训练的方式实现生成数据的能力。随着研究的发展,出现了许多GAN的变体,每个变体都有其独特的改进和特点。
LeetCode113. 路径总和 II(DFS)(递归)
题目描述 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 思路 详见链接 代码 class TreeNode: def __init__(self,x): self.val = x self.left = None self.right = None class Solution: def pathS...
Ubuntu docker镜像中下载安装 DPABI(DPARSF)
在Ubuntu服务器的docker镜像中用MATLAB运行DPABI(以及使用DPARSF的功能)。
【二叉树】路径总和(含路径)
一、题目 力扣原题:https://leetcode-cn.com/problems/path-sum-ii/ 【二叉树】路径总和:https://blog.csdn.net/sinat_34596644/article/details/106109952 二、DFS+回溯 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; *
Phantom Omni的力与力矩操作
*本说明为对Phantom Omni的力与力矩操作 ****************虚拟夹具的力读取与控制************************ 1、首先力的读取要声明【全局变量】 hduVector3Dd F;//三维矢量力(x,y,z三个方向的力) 2、对力的控制可以采用配置函数Set()与Get()函数; 3、对力觉的控制或读取操作需要放到【回调帧】开始与结束之间,如例子
西工大noj100题python2024第一季1-10
【代码】西工大noj100题python2024第一季1-10。
【力扣日记】113 路径总和 II | 递归·强化
题目描述 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 算法思路 二叉树天然适合递归。 第一步:结束条件:if not root:return 第二步:缩小规模:root.left 与root.right替代root递归。 第三步:返回值:这次的递归参考【树遍历】的递归方式,不需要返回值,而是在递归的过程中修改外界的列...
arcgis插件 批量出图 按地块批量出图工具(动态文本、动态节点坐标表)
arcgis插件 批量出图 按地块批量出图工具。
113路径总和 II(递归回溯)
1、题目描述 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明:叶子节点是指没有子节点的节点。 2、示例 给定如下二叉树,以及目标和sum = 22, 5 / \ 4 8 / / \ 11 13 4 ...
NX二次开发常用函数——从一个坐标系到另一个坐标系的转换(UF_MTX4_csys_to_csys )相同体坐标转化
本文介绍了在项目开发中实现坐标转换的方法,重点解析了两个关键函数UF_MTX4_csys_to_csys和UF_MTX4_vec3_multiply的使用。通过4个变换矩阵(transform1-4)实现工作坐标系与绝对坐标系之间的相互转换,并以圆柱体为例详细说明了坐标转换的具体实现过程,包括原点、X/Y轴方向的转换处理。相比之前采用的if-else判断方法,这种矩阵转换方式在代码复杂度和运行效率上都更具优势。
12.工具高级参数CogCalibNPointToNPointTool
CogCalibNPointToNPointTool是一种多点2D坐标校正工具,用于将图像像素坐标转换为物理世界坐标。该工具通过两组点(图像坐标点和物理坐标点)计算最佳转换关系,并将结果保存供后续使用。操作步骤包括获取图像、添加坐标点对、计算转换参数。校正结果会显示平移、缩放、旋转等参数及RMS误差值,较大的误差可能表明点位置不准确或自由度不足。该工具广泛应用于机器视觉领域,通过9点标定等案例可验证坐标转换的准确性并优化参数设置。
LeetCode 113. Path Sum II 寻找二叉树路径总和II(Java)
题目: Given a binary tree and a sum, find all root-to-leaf paths where each path’s sum equals the given sum. Note: A leaf is a node with no children. 解答: 本题为 LeetCode 112 题的进阶版。通过 DFS 深度优先搜索,找到满足的路径。在这...
27、单阶段目标检测算法(SSD):原理、训练与实战
本文详细介绍了单阶段目标检测算法SSD的原理、训练方法与实战应用。内容涵盖SSD的核心机制,如特征图离散化、边界框预测、损失函数设计及难负样本挖掘,并通过使用dlib车辆数据集从零开始训练SSD模型的完整流程展示了实际操作步骤。文章还讨论了训练中的关键问题,如边界框坐标处理和‘忽略区域’缺失的影响,提供了模型评估与优化策略,包括超参数调整、基础网络替换和数据增强。最后总结了SSD的优势与局限性,并展望了未来目标检测技术的发展方向。
LeetCode 112和113 路径总和 路径总和II -- 递归法
文章目录LeetCode 112 路径总和LeetCode 113 路径总和II 参考文章 LeetCode 112 路径总和 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/path-sum 题意: 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
VC中sqlite的使用
在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示
【LeetCode: 113. 路径总和 II + 二叉树 + 递归】
【LeetCode: 113. 路径总和 II + 二叉树 + 递归】给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
【递归】【回溯】Leetcode 112. 路径总和 113. 路径总和 II
【递归】【回溯】Leetcode 112. 路径总和 113. 路径总和 II
leetcode113.路径总和II:递归回溯中路径收集与状态恢复的深度实践
构建:递归进入节点时添加到路径回溯:递归返回时从路径移除核心代码// 进入节点// 递归子树// 离开节点本质:通过列表的添加与移除,模拟路径的延伸与回退本算法通过"递归探索+回溯恢复"的组合策略,实现了对所有符合条件路径的高效收集。问题分解:将"找所有路径"分解为"找左子树路径"和"找右子树路径"状态维护:通过path列表动态维护当前路径,通过targetSum传递剩余目标和适时收集:仅在叶子节点且和为0时收集路径,避免无效操作状态恢复:通过回溯机制,确保不同分支的路径探索互不干扰。
「leetcode」112. 路径总和&113. 路径总和II(详解)递归函数究竟什么时候需要返回值,什么时候不要返回值?
递归函数究竟什么时候需要返回值,什么时候不要返回值?
113. 路径总和 II C++ 递归
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 递归 要注意终止条件,以及 缓存数组中什么时候进入元素 和出元素。及到该节点的时候,该节点的数值进入数组,当左子树和右子树搜索完毕的时候,当前节点值出缓存数组。 class solution { vector&...
lc113.路径总和II【***递归,DFS】->lc78
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<vector<int&g...
Leetcode——113. 路径总和 II(递归、双层集合List、双向链表LinkedList实现栈)
文章目录113. 路径总和 II(递归、双层集合List、双向链表LinkedList实现栈)题目**思想**代码** 113. 路径总和 II(递归、双层集合List、双向链表LinkedList实现栈) https://leetcode-cn.com/problems/path-sum-ii/ 题目** 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22,
(递归是否需要返回值)112.路径总和、113. 路径总和 II
首先给递归是否需要返回值的结论: 如果需要搜索整棵二叉树且不用处理递归返回值,递归函数就不要返回值。(这种情况就是本文下半部分介绍的113.路径总和ii的情况) 如果需要搜索整棵二叉树且需要处理递归返回值,递归函数就需要返回值。 (这种情况我们在236.二叉树的最近公共祖先的情况) 如果要搜索其中一条符合条件的路径,那么递归一定需要返回值,因为遇到符合条件的路径了就要及时返回。(112.路径总和的情况) 112.路径总和 题目描述: 给你二叉树的根节点 root 和一个表示目标和的整数 ta
leetcode 113. 路径总和 II【树】【深度优先搜索】【递归】
题目: 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 /...
迭代法(迭代+栈)模拟递归实现深度优先搜索(DFS):以力扣原题[112. 路径总和]及[113. 路径总和 II]为例
如果直接将 road 作为参数,因为是传引用,子递归对 road 的改变将直接影响上层递归中 road 的值(毕竟自始至终都是在对同一个对象做操作),如果要以用 road 做参数的方式实现回溯,需要在传递 road 时 new 一个新的对象,新对象即是子递归需要的新 road,将新对象作为参数传递给子递归函数,这样,每次递归调用时传入的 road 都不同,子递归对 road 的改变也就不会影响上层递归中 road 的值了。在状态转移中有一个深度优先搜索中重之又重的概念:回溯。
113. 路径总和 II 中等 递归
路径总和 II 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22 输出:[[5,4,11,2],[5,8,4,5]] 示例 2: 输入:root = [1,2,3], targetSum = 5 输出:[] 示例 3: 输入:root = [1,2].
113. 路径总和 II(递归法)
路径总和等于给定目标和的路径。是指没有子节点的节点。
2021.1.21每日复习 113.路径总和II(回溯)+ 114.二叉树展开为链表(递归)
113.路径总和II(回溯) 114.二叉树展开为链表(递归)
2262



被折叠的 条评论
为什么被折叠?



