博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉树中和为某一值的路径
阅读量:6435 次
发布时间:2019-06-23

本文共 1307 字,大约阅读时间需要 4 分钟。

题目描述

输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)
 
1 public class TreeNode { 2  3     int val=0; 4     TreeNode left; 5     TreeNode right; 6  7     public TreeNode(int val) { 8  9         this.val = val;10     }11 12 }

 

1 public class Solution { 2     ArrayList
arrayIN = new ArrayList<>(); 3 ArrayList
> arrayOut = new ArrayList
>(); 4 //注意:这俩个数组声明要放在函数外面,因为他们是不能参与递归的操作的,不然都是new对象了(我就犯傻了) 5 //还有下面这个数组声明的泛型格式注意下 6 7 public ArrayList
> FindPath(TreeNode root, int target) { 8 9 if (root == null) {10 return arrayOut;11 }12 13 arrayIN.add(root.val);14 15 target = target - root.val; // 求剩余路径的长度和16 17 if (target == 0 && root.left == null && root.right == null) {18 19 arrayOut.add(new ArrayList<>(arrayIN)); // 新建一个满足条件的数组并放入数组中20 21 }22 23 FindPath(root.left, target); // 递归左子树24 FindPath(root.right, target); // 递归右子树25 arrayIN.remove(arrayIN.size() - 1);26 // 这句话的就是在递归回溯的时候,它会移除掉当前arrayIn数组最后一个元素27 // 相当于退回一步,用arrayIn的前一个元素去执行当前递归的上一个递归(画一个递归图回溯就会明了)。28 // 因为这里的arrayIn是共用的,而真正属于自己的是new ArrayList<>(arrayIN)29 30 return arrayOut;31 32 }33 }

 

 

转载于:https://www.cnblogs.com/Octopus-22/p/9448765.html

你可能感兴趣的文章
曹政--互联网搜索老师傅
查看>>
MUI框架开发HTML5手机APP(一)--搭建第一个手机APP(转)
查看>>
linux下使用 du查看某个文件或目录占用磁盘空间的大小
查看>>
[wp7软件]wp7~~各种视频播放器下载大全
查看>>
Java工程师必知之事 —— 如何定义自己的职业路线?
查看>>
代码质量与规范,那些年你欠下的技术债
查看>>
计算机程序的思维逻辑 (19) - 接口的本质
查看>>
CVE-2014-4113漏洞利用过程分析
查看>>
解密MSSQL链接数据库的密码
查看>>
Glide-源码详解
查看>>
你敢在post和get上刁难我,就别怪我装逼了
查看>>
直播 3.0 时代,在线教育行业的裂变和重构
查看>>
SpringBoot使用Nacos服务发现
查看>>
2017双11技术揭秘—阿里巴巴数据库技术架构演进
查看>>
我的友情链接
查看>>
Spring框架 - AOP使用
查看>>
Ansible常用内置属性
查看>>
C#使用正则表达式校验邮箱
查看>>
Linux自动清理N天前目录文件
查看>>
方便 快捷 安全的EVO邮件服务器
查看>>