当前位置:网站首页>#113 Path Sum II
#113 Path Sum II
2022-06-12 20:58:00 【yoyooyooo】
Description
Given the root of a binary tree and an integer targetSum, return all root-to-leaf paths where the sum of the node values in the path equals targetSum. Each path should be returned as a list of the node values, not node references.
A root-to-leaf path is a path starting from the root and ending at any leaf node. A leaf is a node with no children.
Examples
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]]
Explanation: There are two paths whose sum equals targetSum:
5 + 4 + 11 + 2 = 22
5 + 8 + 4 + 5 = 22
Example 2:
Input: root = [1,2,3], targetSum = 5
Output: []
Example 3:
Input: root = [1,2], targetSum = 0
Output: []
Constraints:
The number of nodes in the tree is in the range [0, 5000].
-1000 <= Node.val <= 1000
-1000 <= targetSum <= 1000
思路
我纠结的点在于用什么作为中间存储介质,后面建立了一个List<List<TreeNode>>
但是看到submission里面的解法之后,确实是还有改进的空间,下次重新试试
代码
/** * 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<List<TreeNode>> all = new ArrayList<>();
List<List<Integer>> answer = new ArrayList<>();
public void addAnswer(int i) {
List<TreeNode> nodes = all.get(i);
List<Integer> sum = new ArrayList<>();
for (TreeNode node: nodes) {
sum.add(node.val);
}
answer.add(sum);
}
public void getSum(List<Integer> sum, int targetSum) {
if (all.size() == 0)
return;
List<List<TreeNode>> next = new ArrayList<>();
List<Integer> nextSum = new ArrayList<>();
for (int i = 0; i < all.size(); i++) {
List<TreeNode> nodes = all.get(i);
TreeNode node = nodes.get(nodes.size() - 1);
int currSum = sum.get(i);
if (node.left == null && node.right == null) {
if (currSum == targetSum) {
addAnswer(i);
}
continue;
}
if (node.left != null) {
List<TreeNode> newTmp = new ArrayList<>(nodes);
newTmp.add(node.left);
next.add(newTmp);
nextSum.add(currSum + node.left.val);
}
if (node.right != null) {
List<TreeNode> newTmp = new ArrayList<>(nodes);
newTmp.add(node.right);
next.add(newTmp);
nextSum.add(currSum + node.right.val);
}
}
all = next;
getSum(nextSum, targetSum);
}
public List<List<Integer>> pathSum(TreeNode root, int targetSum) {
if (root == null)
return new ArrayList<>();
List<TreeNode> nodes = new ArrayList<>();
nodes.add(root);
all.add(nodes);
List<Integer> sum = new ArrayList<>();
sum.add(root.val);
getSum(sum, targetSum);
return answer;
}
}
边栏推荐
- 没有学历,自学软件测试,找到一份月入过万的测试工作真的有可能吗?
- 解决cvxpy报错The solver GLPK_MI is not installed
- Can flush open an account? Can you directly open the security of securities companies on the app? How to open an account online when buying stocks
- Draw according to weight
- 半路自学测试成功转行,第一份测试工作就拿10k
- remote: Support for password authentication was removed on August 13, 2021
- Why my order by create_ Time ASC becomes order by ASC
- At the same time, do the test. Others have been paid 20W a year. Why are you still working hard to reach 10K a month?
- JS deep and shallow copy
- Lombok package is successfully installed, but the runtime prompts that get, set method and constructor solution cannot be found
猜你喜欢
![Li Mu [practical machine learning] 1.4 data annotation](/img/e4/2593b1dec04476a9cc3b4af94dc189.jpg)
Li Mu [practical machine learning] 1.4 data annotation

Listener in JSP

Zhangqiming, vice director of the United Front Work Department of the CPC Anhui Provincial Committee, led a team to investigate the HoloNet Royal Hefei R & D base

Nexus3 build local warehouse

leetcode:210. 课程表 II

阿里前辈给我推荐的软件测试人员必读书籍(附电子书),让我受益匪浅...

Successful transition from self-study test halfway, 10K for the first test

竣达技术丨适用于“科士达”智能精密空调网络监控

Leetcode: 210. Programme II

String Basics
随机推荐
HR SaaS unicorn is about to emerge. Will the employee experience be the next explosive point?
Is it really possible to find a testing job with a monthly income of more than 10000 without a degree and self-study software testing?
解决cvxpy报错The solver GLPK_MI is not installed
Properties to YML
torch. Finfo function
UVa11991 Easy Problem from Rujia Liu
Simplest ALV template
My way of programming
Algorinote_ 2_ Main theorem and Akra bazzi theorem
lintcode:127 · 拓扑排序
循环插入excel某一列,以及多列之和
最简单ALV模板
Preliminary understanding of regular expressions (regex)
Design and practice of Hudi bucket index in byte skipping
Can tonghuashun open an account? Can tonghuashun directly open the security of securities companies on the app? How to open an account online when buying stocks
Zhangqiming, vice director of the United Front Work Department of the CPC Anhui Provincial Committee, led a team to investigate the HoloNet Royal Hefei R & D base
Junda technology is applicable to "kestar" intelligent precision air conditioning network monitoring
Research Report on market supply and demand and strategy of hydraulic operating table industry in China
Cv2.lut() (populates the output array with values from the lookup table)
Social metauniverse: start from redefining yourself