一. 问题描述

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

说明: 叶子节点是指没有子节点的节点。

示例:

给定如下二叉树,以及目标和 sum = 22,

5

/    \

4       8

/        /   \

11      13     4

/   \             /   \

7    2         5      1

返回:

[

[5,4,11,2],

[5,8,4,5]

]

二. 解题思路

本题思路:采用深度优先遍历和递归的方式进行求解。

步骤一:构建递归函数(全局变量list存储结果值,局部变量data存储当前某一条路径,root当前节点,num当前路径值的和,tacket目标值)。

步骤二:递归函数进行判断:如果当前节点是叶子节点,且num==tacket,则将当前data添加到list中,否则将当前节点变成当前节点的左子树节点和右子树节点重复步骤二。

步骤三:当遍历完所有节点则放回输出list。

三. 执行结果

执行用时 :3 ms, 在所有 java 提交中击败了61.35%的用户

内存消耗 :40.7 MB, 在所有 java 提交中击败了34.70%的用户

四. Java代码

class Solution {
public List<List<Integer>> pathSum(TreeNode root, int sum) {
List<List<Integer>> list=new ArrayList<List<Integer>>();
if(root==null) {
return list;
}else {
List<Integer> data=new ArrayList<Integer>();
data.add(root.val);
getTree(list,data,root,root.val,sum);
return list; }
}
public void getTree(List<List<Integer>> list,List<Integer> data,TreeNode root,int num,int tacket) { if(root.left==null&&root.right==null&&num==tacket) {
list.add(data);
} if(root.left!=null) {
List<Integer> temp=new ArrayList<Integer>(data);
temp.add(root.left.val);
getTree(list,temp,root.left,num+root.left.val,tacket); } if(root.right!=null) {
List<Integer> tempright=new ArrayList<Integer>(data);
tempright.add(root.right.val);
getTree(list,tempright,root.right,num+root.right.val,tacket);
} }
}

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

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

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

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

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

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

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

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

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

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

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

  6. LeetCode(113):路径总和 II

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

  7. 113. 路径总和 II

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

  8. 113 Path Sum II 路径总和 II

    给定一个二叉树和一个和,找到所有从根到叶路径总和等于给定总和的路径.例如,给定下面的二叉树和 sum = 22,              5             / \            4 ...

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

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

随机推荐

  1. js控制数量包含截取

    <div class="usermes_index_line"> 进行中的单 <div id="usermes_index_line_i2"& ...

  2. HTTP权威指南-概述

    URI 统一资源标识符 类似于邮件地址,邮箱. URL 统一资源定位符 URN 统一资源名 HTTP方法 get post put delete post head 状态码 200 OK 302 重定 ...

  3. LeetCode 414. 第三大的数(Third Maximum Number) 3

    414. 第三大的数 414. Third Maximum Number 题目描述 给定一个非空数组,返回此数组中第三大的数.如果不存在,则返回数组中最大的数.要求算法时间复杂度必须是 O(n). 每 ...

  4. urls 视图层

    urls.py 路由层 路由与视图函数对应关系 >>> 路由层 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射 ...

  5. TypeScript 高级类型 类(class)

    传统的JavaScript程序使用函数和基于原型的继承来创建可重用的组件,但对于熟悉使用面向对象方式的程序员来讲就有些棘手,因为他们用的是基于类的继承并且对象是由类构建出来的. 从ECMAScript ...

  6. springboot项目启动报错Failed to configure a DataSource: 'url' attribute is not specified and no embedde

    springboot项目启动报错Failed to configure a DataSource: 'url' attribute is not specified and no embedde 创建 ...

  7. C之typedef

    1.1 typedef 解析: 1.typedef是一个关键字: 2.typedef它的对象必须是一个类型: 3.作用:给类型取一个别名 1.2 typedef 格式 : typedef  类型    ...

  8. CH02基于ZYNQ的嵌入式LINUX移植

    CH02基于ZYNQ的嵌入式LINUX移植 1.1概述 实验环境: Windows 10 专业版 Vmware workstation 14.1.1 Ubuntu 16.04.3 Xilinx SDx ...

  9. dotnet Core学习之旅(一):安装SDK

    [重要:文中所有外链不能确保永久有效] >环境 .NET Core 包含两个部分 .NET Core Runtime 和 .NET Core SDK(包含Runtime) 点击此处到达下载页面( ...

  10. Codeforces Round #557 (Div. 1)

    A.直接做. #include<vector> #include<cstdio> #include<cstring> #include<iostream> ...