当前位置:网站首页>Leetcode exercise - 113 Path sum II
Leetcode exercise - 113 Path sum II
2022-07-07 10:11:00 【SK_ Jaco】
1. Title Description
113. The sum of the paths II
Give you the root node of the binary tree root And an integer target and targetSum , Find out all From the root node to the leaf node The path sum is equal to the given target sum .
Leaf node A node without children .
Example 1:
Input :root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22
Output :[[5,4,11,2],[5,8,4,5]]
Example 2:
Input :root = [1,2,3], targetSum = 5
Output :[]
Example 3:
Input :root = [1,2], targetSum = 0
Output :[]
2. Problem solving ideas and codes
2.1 Their thinking
This problem is to find the path from the root node to the upper sum of the leaf node as the target , You can use preorder traversal for processing . When the node is not a leaf node , Put the current node into the path list , And the target value minus the current node value ; If the current node is a leaf node , You need to judge target Is it 0, If it is 0, Then put the current path into the result list ; If not 0, Then return to . After processing the left and right nodes, you need to delete the current node from the path list . Take the topic as an example 1 As an example :
First, traverse the binary tree downward from the root node , Put the current node into the path list , meanwhile target Subtract the current node value .
When traversing the leaf node , Judge target Is it 0, Not at this time 0, Therefore, this path does not meet the requirements , Return to the previous node .
When returning, you need to remove the current node from the path list , Then continue down to 2 This node . here target be equal to 0, Meet the requirements , take [5, 4, 11, 2] This path is put into the result . Repeat the above steps and continue to traverse until the end .
2.2 Code
class Solution {
List<List<Integer>> ans = new ArrayList<>();
public List<List<Integer>> pathSum(TreeNode root, int target) {
if (root == null) {
return ans;
}
process(root, new ArrayList<>(), target);
return ans;
}
public void process(TreeNode root, List<Integer> tmp, int target) {
if (root == null) {
return;
}
tmp.add(root.val);
target -= root.val;
if (root.left == null && root.right == null && target == 0){
// If the current node is a leaf node , also target be equal to 0, Put the path into the result list
ans.add(new ArrayList<>(tmp));
}
process(root.left, tmp, target);
process(root.right, tmp, target);
// After processing the left and right nodes, remove the current node from the path list
tmp.remove(tmp.size() - 1);
}
}
2.3 test result
Pass the test
3. summary
- Use preorder traversal to solve
- Each node needs to move the current node out of the path list after processing the left and right nodes
边栏推荐
猜你喜欢
Agile course training
ORM--查询类型,关联查询
How to cancel automatic saving of changes in sqlyog database
LLVM之父Chris Lattner:為什麼我們要重建AI基礎設施軟件
LLVM之父Chris Lattner:为什么我们要重建AI基础设施软件
Win10 installation vs2015
嵌入式背景知识-芯片
ORM模型--数据记录的创建操作,查询操作
The Himalaya web version will pop up after each pause. It is recommended to download the client solution
Web3.0 series distributed storage IPFs
随机推荐
Finally, there is no need to change a line of code! Shardingsphere native driver comes out
The request object parses the request body and request header parameters
Flinkcdc failed to collect Oracle in the snapshot stage. How do you adjust this?
Delete a record in the table in pl/sql by mistake, and the recovery method
一大波开源小抄来袭
CONDA creates virtual environment offline
Gym - 102219j kitchen plates (violent or topological sequence)
【ORM框架】
Word自动生成目录的方法
Before joining the chain home, I made a competitive product analysis for myself
Qualifying 3
Gauss elimination
【学习笔记-李宏毅】GAN(生成对抗网络)全系列(一)
ORM--数据库增删改查操作逻辑
Basic chapter: take you through notes
Postman interface test III
Win10安装VS2015
The combination of over clause and aggregate function in SQL Server
ORM--逻辑关系与&或;排序操作,更新记录操作,删除记录操作
ORM model -- associated fields, abstract model classes