LeetCode103|路径总和II
时间:2022-07-28
本文章向大家介绍LeetCode103|路径总和II,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
0x01, 问题简述
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。
说明: 叶子节点是指没有子节点的节点。
0x02,示例
示例:
给定如下二叉树,以及目标和 sum = 22,
5
/
4 8
/ /
11 13 4
/ /
7 2 5 1
返回:
[
[5,4,11,2],
[5,8,4,5]
]
0x03,题解思路
找到所有路径,进行解决
0x04,题解程序
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class PathSumTest {
public static void main(String[] args) {
TreeNode t1 = new TreeNode(5);
TreeNode t2 = new TreeNode(4);
TreeNode t3 = new TreeNode(8);
TreeNode t4 = new TreeNode(11);
TreeNode t5 = new TreeNode(13);
TreeNode t6 = new TreeNode(4);
TreeNode t7 = new TreeNode(7);
TreeNode t8 = new TreeNode(2);
TreeNode t9 = new TreeNode(5);
TreeNode t10 = new TreeNode(1);
t1.left = t2;
t1.right = t3;
t2.left = t4;
t3.left = t5;
t3.right = t6;
t4.left = t7;
t4.right = t8;
t6.left = t9;
t6.right = t10;
int sum = 22;
List<List<Integer>> listList = pathSum(t1, sum);
System.out.println("listList = " + listList);
}
public static List<List<Integer>> pathSum(TreeNode root, int sum) {
List<List<Integer>> listList = new ArrayList<>();
if (root == null) {
return listList;
}
List<String> paths = new ArrayList<>();
LinkedList<TreeNode> deque = new LinkedList<>();
LinkedList<String> path_back = new LinkedList<>();
deque.add(root);
path_back.add(Integer.toString(root.val));
TreeNode treeNode;
String path;
while (!deque.isEmpty()) {
treeNode = deque.pollLast();
path = path_back.pollLast();
if (treeNode.left == null && treeNode.right == null) {
paths.add(path);
}
if (treeNode.left != null) {
deque.add(treeNode.left);
path_back.add(path + "," + treeNode.left.val);
}
if (treeNode.right != null) {
deque.add(treeNode.right);
path_back.add(path + "," + treeNode.right.val);
}
}
paths.stream().map(str -> str.split(",")).forEachOrdered(split -> {
if (Stream.of(split).filter(Objects::nonNull).
filter(x -> !"".equals(x)).mapToInt(Integer::parseInt).sum() == sum) {
List<Integer> list = new ArrayList<>();
for (String s : split) {
list.add(Integer.parseInt(s));
}
listList.addAll(Collections.singleton(list));
}
});
return listList;
}
}
0x05 ,题解程序图片版
0x06,总结
我的文章基本上都很少再内容上去过多强调重要性了,你觉得重要它就重要,相比于以往的文章去给与读者或者自己去强调有多么重要,后面单独想想其实没有吧必要去这样说,于己于他都没有意义,主动感觉他重要,去做就可以了,这是自己的一点内容。
- Python爬虫(十九)_动态HTML介绍
- Python爬虫(二十)_动态爬取影评信息
- Python爬虫(二十一)_Selenium与PhantomJS
- Python爬虫(十三)_案例:使用XPath的爬虫
- Python爬虫(十四)_BeautifulSoup4 解析器
- Python爬虫(十五)_案例:使用bs4的爬虫
- Python爬虫(十六)_JSON模块与JsonPath
- 多类好米齐交易:域名776.cn近10万元结拍
- Python爬虫(八)_Requests的使用
- Python爬虫(十一)_案例:使用正则表达式的爬虫
- Python爬虫(十二)_XPath与lxml类库
- 区块链域名热度不减 健康类英文米近六位交易
- Python爬虫(九)_非结构化数据与结构化数据
- Python爬虫(十)_正则表达式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP实现二维数组按照指定的字段进行排序算法示例
- python怎么自定义捕获错误
- Codeforces Round #677 (Div. 3)
- PHP PDOStatement::fetchObject讲解
- PHP PDOStatement::getAttribute讲解
- Laravel框架自定义验证过程实例分析
- Codeigniter里的无刷新上传的实现代码
- django ObjectDoesNotExist 和 DoesNotExist的用法
- PHP PDOStatement::closeCursor讲解
- 使用python实现下载我们想听的歌曲,速度超快
- JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
- OpenCV4.1.0+VS2017环境配置的方法步骤
- 详解如何实现Laravel的服务容器的方法示例
- laravel 数据迁移与 Eloquent ORM的实现方法
- PDO::query讲解