33-剑指 Offer 34. 二叉树中和为某一值的路径
创始人
2024-05-05 12:14:31
0

题目

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

叶子节点是指没有子节点的节点。

示例 1:

输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22

输出:[[5,4,11,2],[5,8,4,5]]

示例 2:

输入:root = [1,2,3], targetSum = 5

输出:[]

示例 3:

输入:root = [1,2], targetSum = 0

输出:[]

提示:

树中节点总数在范围 [0, 5000] 内

-1000 <= Node.val <= 1000

-1000 <= targetSum <= 1000


思路:深度优先搜索dfs+回溯法+前序遍历+路径记录+递归

pathSum(root, target) 函数:

初始化: 结果列表 res ,路径列表tmp。

返回值: 返回 res 即可。

dfs(root, target) 函数:

递推参数: 当前节点 root ,当前目标值 target 。

终止条件: 若节点 root 为空,则直接返回。

递推工作:

路径更新: 将当前节点值 root.val 加入路径 tmp ;

目标值更新: target = target - root.val(即目标值从target减至 0);

路径记录: 当root 为叶节点且路径和等于目标值 ,则将此路径 tmp 加入 res 。

先序遍历: 递归左 / 右子节点。

路径恢复: 向上回溯前,需要将当前节点从路径 tmp 中删除。


代码

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {List> res;List tmp;public List> pathSum(TreeNode root, int target) {res = new ArrayList<>();tmp = new ArrayList<>();dfs(root, target);return res;}public void dfs(TreeNode root, int target) {if(root == null) {return;}tmp.add(root.val);target = target - root.val;if(root.left == null && root.right == null && target == 0) {res.add(new ArrayList<>(tmp));}dfs(root.left, target);dfs(root.right, target);tmp.remove(tmp.size() - 1);}
}

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
ChatGPT 怎么用最新详细... ChatGPT 以其强大的信息整合和对话能力惊艳了全球,在自然语言处理上面表现出了惊人...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...