//递归吧,但是在递归到底的条件上要判断好,比如说完整路径是到叶子节点,也就是说左右子节点都为空,并且这时候的root.val==target表示找到了一个list,再返回。

但是因为我并没有直接就用target-root.val,所以在有些情况下,比如说遇到一个null节点的时候,我们不能直接返回,需要给这个list加一个值,因为返回到上一层之后我们会remove掉list中的最后一个元素,所以我们每次递归的时候都要给list加一个元素,不然返回到上一层的时候节点元素对不上,这是一个要注意的点,

还有就是如果它不是叶子节点,并且这时候的root.val>=target了,也就是下面那个else,我们就可以不继续递归下去了,直接返回就可以了,

**或者说你可以上来就直接把val值给弄掉,这样有的时候就不需要给list加一个无关紧要的值了,但是这个结束就是target==0了。

 1 import java.util.ArrayList;
2 /**
3 public class TreeNode {
4 int val = 0;
5 TreeNode left = null;
6 TreeNode right = null;
7
8 public TreeNode(int val) {
9 this.val = val;
10
11 }
12
13 }
14 */
15 public class Solution {
16 ArrayList<ArrayList<Integer>> res=new ArrayList<>();
17 public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
18 ArrayList<Integer> list=new ArrayList<>();
19 if(root==null)
20 return res;
21 helper(root,target,list);
22 return res;
23 }
24 public void helper(TreeNode root, int target,ArrayList<Integer> list)
25 {
26 if(root==null)
27 {
28 list.add(0);
29 return ;
30 }
31 if(root.left==null&&root.right==null)
32 {
33 if(root.val==target)
34 {
35 list.add(root.val);
36 res.add(new ArrayList<Integer>(list));
37 return ;
38 }
39 else
40 {
41 list.add(0);
42 return ;
43 }
44 }
45 if(root.val<target)
46 {
47 list.add(root.val);
48 helper(root.left,target-root.val,list);
49 list.remove(list.size()-1);
50 helper(root.right,target-root.val,list);
51 list.remove(list.size()-1);
52 }
53 else
54 {
55 list.add(0);
56 return ;
57 }
58 return ;
59
60 }
61 }

根节点到叶子节点路径之和为target的更多相关文章

  1. 找出所有从根节点到叶子节点路径和等于n的路径并输出

    //找出所有从根节点到叶子节点路径和等于n的路径并输出 Stack<Node> stack = new Stack<Node>(); public void findPath( ...

  2. 求二叉树的深度,从根节点到叶子节点的最大值,以及最大路径(python代码实现)

    首先定义一个节点类,包含三个成员变量,分别是节点值,左指针,右指针,如下代码所示: class Node(object): def __init__(self, value): self.value ...

  3. MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)

    背景说明 需求:MySQL树形结构, 根据指定的节点,获取其下属的所有子节点(包含路径上的枝干节点和叶子节点) 枝干节点:如果一个节点下还有子节点,则为枝干节点. 叶子节点:如果一个节点下不再有子节点 ...

  4. Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框

    Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框 Jquery EasyUI Combotree单选框,Jquery EasyUI Combotree只能选择叶子节点 ...

  5. Z-tree 统计每一父节点的叶子节点数(看这一篇就够了)

    最近刚走出校园的我找到了第一份工作,在入职考核中就遇见了一道Z-tree的试题 这道题目本身是不难的,但是我第一次接触这个插件而且还把解决问题的方向搞错了,弄的我好几天都很难受. 弄得我都开始怀疑人生 ...

  6. Ext.jsTree 向子节点添加叶子节点

    // 定义搜索节点树结构Store const nodeStore = Ext.create('Ext.data.TreeStore', { autoLoad : true, id : 'nodeSt ...

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

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

  8. Leetcode之深度优先搜索(DFS)专题-129. 求根到叶子节点数字之和(Sum Root to Leaf Numbers)

    Leetcode之深度优先搜索(DFS)专题-129. 求根到叶子节点数字之和(Sum Root to Leaf Numbers) 深度优先搜索的解题详细介绍,点击 给定一个二叉树,它的每个结点都存放 ...

  9. MySQL 树形结构 根据指定节点 获取其所有叶子节点

    背景说明 需求:MySQL树形结构, 根据指定的节点,获取其下属的所有叶子节点. 叶子节点:如果一个节点下不再有子节点,则为叶子节点. 问题分析 1.可以使用类似Java这种面向对象的语言,对节点集合 ...

随机推荐

  1. layui 的基本使用介绍

    全局配置 layui.config({ dir: '/res/layui/' //layui.js 所在路径(注意,如果是script单独引入layui.js,无需设定该参数.),一般情况下可以无视 ...

  2. 通过Relect反射方法创建对象,获得对象的方法,输出对象信息

    package reflects; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java. ...

  3. NB-IoT的HARQ过程是怎么样的

    NB-IoT的HARQ是一种将前向纠错(Forward Error Correction,FEC)编码和ARQ相结合而形成的技术.HARQ的基本原理是缓存没有正确接收到的数据,并且将重传数据和原始数据 ...

  4. python中的 异常处理(try...expect)

    错误处理 关注公众号"轻松学编程"了解更多. 在程序运行的过程中,如果发生了错误,可以事先约定一个错误代码,这样就可以知道是否有错,以及出错的原因,在操作系统的调用中,返回错误码的 ...

  5. 团灭 LeetCode 股票买卖问题

    很多读者抱怨 LeetCode 的股票系列问题奇技淫巧太多,如果面试真的遇到这类问题,基本不会想到那些巧妙的办法,怎么办?所以本文拒绝奇技淫巧,而是稳扎稳打,只用一种通用方法解决所用问题,以不变应万变 ...

  6. Java反射复习笔记

    目录 反射 获取反射的三种方式: Class对象的功能 获取 成员变量/成员变量们 获取 成员方法/成员方法们 获取构造方法们 获取全类名 Field:成员变量 Method:成员方法 Constru ...

  7. 1_Two Sum

    1.Two Sum Given an array of integers, return indices of the two numbers such that they add up to a s ...

  8. mongoDB之C#and.net Driver

    之前一直都是用NodeJS来连接操作mongoDB的,但是最近需要用C#操作mongoDB的需要,所以研究了下C#驱动.mongoDB官方在GitHub上提供了C#驱动源码https://github ...

  9. leetcode105: jump-game-ii

    题目描述 给出一个非负整数数组,你最初在数组第一个元素的位置 数组中的元素代表你在这个位置可以跳跃的最大长度 你的目标是用最少的跳跃次数来到达数组的最后一个元素的位置 例如 给出数组 A =[2,3, ...

  10. -bash: bash_profile: command not found问题

    这个问题一般就是.bash_profile 文件内容错误,里面内容没加注释之内的,vi .bash_profile打开文件检查一下,然后:wq!保存退出 我的错误就是红圈处没有注释造成的