剑指 Offer 34. 二叉树中和为某一值的路径 + 记录所有路径
剑指 Offer 34. 二叉树中和为某一值的路径
Offer_34
题目详情

题解分析
- 本题是二叉树相关的题目,但是又和路径记录相关。
- 在记录路径时,可以使用一个栈来存储一条符合的路径,在回溯时将进栈的元素出栈,以此可以找到所有的Path。
package com.walegarrett.offer;
import java.util.*;
/**
* @Author WaleGarrett
* @Date 2021/2/1 18:09
*/
/**
* 题目:输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。
* 从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。
*/
public class Offer_34 {
int sum;
Stack<Integer> sta = new Stack<>();
List<List<Integer>> allPaths;
void dfs(TreeNode now, int num){
if(now == null)//这里不能加上num > sum 因为可能存在负数的情况
return;
else if(now.left == null && now.right == null){
if(num == sum){
// 打印
List<Integer> current = Arrays.asList(sta.toArray(new Integer[sta.size()]));
// Collections.reverse(current);
allPaths.add(current);
}
return;
}
if(now.left != null){
sta.push(now.left.val);
dfs(now.left, num + now.left.val);
sta.pop();
}
if(now.right != null){
sta.push(now.right.val);
dfs(now.right, num + now.right.val);
sta.pop();
}
}
public List<List<Integer>> pathSum(TreeNode root, int sum) {
if(root == null)
return new ArrayList<>();
this.sum = sum;
allPaths = new ArrayList<>();
sta.push(root.val);
dfs(root, root.val);
return allPaths;
}
}
剑指 Offer 34. 二叉树中和为某一值的路径 + 记录所有路径的更多相关文章
- 剑指 Offer 34. 二叉树中和为某一值的路径
剑指 Offer 34. 二叉树中和为某一值的路径 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径.从树的根节点开始往下一直到叶节点所经过的节点形成一条路径. 示例: 给定如下 ...
- 【Java】 剑指offer(34) 二叉树中和为某一值的路径
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有 ...
- 每日一题 - 剑指 Offer 34. 二叉树中和为某一值的路径
题目信息 时间: 2019-06-27 题目链接:Leetcode tag:深度优先搜索 回溯法 难易程度:中等 题目描述: 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径.从 ...
- 剑指Offer:二叉树中和为某一值的路径【34】
剑指Offer:二叉树中和为某一值的路径[34] 题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. ...
- 【剑指Offer】二叉树中和为某一值的路径 解题报告(Python)
[剑指Offer]二叉树中和为某一值的路径 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-intervi ...
- 【剑指offer】二叉树中和为某一值的路径
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26141815 题目描写叙述: 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数 ...
- Go语言实现:【剑指offer】二叉树中和为某一值的路径
该题目来源于牛客网<剑指offer>专题. 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路 ...
- 《剑指offer》二叉树中和为某一值的路径
本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:
- 剑指OFFER之二叉树中和为某一值的路径(九度OJ1368)
题目描述: 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. 输入: 每个测试案例包括n+1行: 第一行为2 ...
随机推荐
- hdu5550 Game Rooms
Time Limit: 4000/4000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Submission ...
- Codeforces Round #635 C. Linova and Kingdom
传送门:C. Linova and Kingdom 题意:给你一棵树,要求对k个结点涂色,然后统计每个未涂色结点到根结点的路径上未涂色结点的和,求和最大能为多少 题解:对着样例画几遍,然后贪心发现,最 ...
- WSL安装
默认的我们可以看到并没有安装任何发行版本: 访问:https://aka.ms/wslstore 安装后我们如何进入linux系统呢,我们使用windows terminal
- 5分钟看懂Code128条形码
什么是Code128条形码? 相信大家看到这个都不陌生吧 1.前言 条形码种类很多,常见的大概有二十多种码制,其中包括:Code39码(标准39码).Codabar码(库德巴码).Code25码(标准 ...
- Sublime text 3 中 Package Control安装
安装前 ctrl+shift+p 在命令板中输入PC,如下图表示没安装: 使用ctrl+~调出sublime软件的控制台命令窗口:粘贴运行 import urllib.request,os,hash ...
- Inkscape tricks
Draw straight lines: click pencil button -> click once on your canvas(starting point) -> click ...
- flex & align-content & justify-items
flex & align-content & justify-items align-content 多行 align-items 的对其方式 https://developer.mo ...
- CURL (CommandLine Uniform Resource Locator) 简易教程!
1 http://curl.haxx.se/ http://curl.haxx.se/docs/httpscripting.html curl is an open source command li ...
- Android四大组件简介:Android 基础知识,开发教程
Android 四大组件: Activity.Service.Broadcast Receiver.Content Provider. http://developer.android.com/int ...
- vue & arrow function error
vue & arrow function error <template> <div class="home"> <img alt=" ...