Skip to content

Commit 2d06b45

Browse files
committed
一刷1110
1 parent 52121b7 commit 2d06b45

File tree

5 files changed

+72
-8
lines changed

5 files changed

+72
-8
lines changed

README.adoc

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7796,13 +7796,13 @@ TIP: **公众号的微信号是: `jikerizhi`**。__因为众所周知的原因
77967796
|Medium
77977797
|
77987798

7799-
//|{counter:codes}
7800-
//|{leetcode_base_url}/delete-nodes-and-return-forest/[1110. Delete Nodes And Return Forest^]
7801-
//|{source_base_url}/_1110_DeleteNodesAndReturnForest.java[Java]
7802-
//|{doc_base_url}/1110-delete-nodes-and-return-forest.adoc[题解]
7803-
//|Medium
7804-
//|
7805-
//
7799+
|{counter:codes}
7800+
|{leetcode_base_url}/delete-nodes-and-return-forest/[1110. Delete Nodes And Return Forest^]
7801+
|{source_base_url}/_1110_DeleteNodesAndReturnForest.java[Java]
7802+
|{doc_base_url}/1110-delete-nodes-and-return-forest.adoc[题解]
7803+
|Medium
7804+
|
7805+
78067806
//|{counter:codes}
78077807
//|{leetcode_base_url}/maximum-nesting-depth-of-two-valid-parentheses-strings/[1111. Maximum Nesting Depth of Two Valid Parentheses Strings^]
78087808
//|{source_base_url}/_1111_MaximumNestingDepthOfTwoValidParenthesesStrings.java[Java]

docs/1110-delete-nodes-and-return-forest.adoc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,18 @@ image::https://assets.leetcode.com/uploads/2019/07/01/screen-shot-2019-07-01-at-
2929
* `to_delete.length <= 1000`
3030
* `to_delete` contains distinct values between `1` and `1000`.
3131

32+
== 思路分析
3233

34+
利用递归,在“后序遍历”阶段,对当前阶段判断是否需要删除。
3335

3436
[[src-1110]]
3537
[{java_src_attr}]
3638
----
3739
include::{sourcedir}/_1110_DeleteNodesAndReturnForest.java[tag=answer]
3840
----
3941

42+
== 参考资料
43+
44+
. https://leetcode.cn/problems/delete-nodes-and-return-forest/solutions/2286145/shan-dian-cheng-lin-by-leetcode-solution-gy95/[1110. 删点成林 - 官方题解^]
45+
. https://leetcode.cn/problems/delete-nodes-and-return-forest/solutions/2289131/he-shi-ji-lu-da-an-pythonjavacgo-by-endl-lpcd/[1110. 删点成林 - 简洁写法!^]
46+

docs/index.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2294,7 +2294,7 @@ include::1094-car-pooling.adoc[leveloffset=+1]
22942294

22952295
include::1109-corporate-flight-bookings.adoc[leveloffset=+1]
22962296

2297-
// include::1110-delete-nodes-and-return-forest.adoc[leveloffset=+1]
2297+
include::1110-delete-nodes-and-return-forest.adoc[leveloffset=+1]
22982298

22992299
// include::1111-maximum-nesting-depth-of-two-valid-parentheses-strings.adoc[leveloffset=+1]
23002300

logbook/202406.adoc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -888,6 +888,10 @@
888888
|{doc_base_url}/0892-surface-area-of-3d-shapes.adoc[题解]
889889
|✅ 计算几个柱子的面积
890890

891+
|{counter:codes}
892+
|{leetcode_base_url}/delete-nodes-and-return-forest/[1110. Delete Nodes And Return Forest^]
893+
|{doc_base_url}/1110-delete-nodes-and-return-forest.adoc[题解]
894+
|✅ 递归+深度优先
891895

892896
|===
893897

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.diguage.algo.leetcode;
2+
3+
import com.diguage.algo.util.TreeNode;
4+
5+
import java.util.ArrayList;
6+
import java.util.Arrays;
7+
import java.util.List;
8+
import java.util.Set;
9+
import java.util.stream.Collectors;
10+
11+
public class _1110_DeleteNodesAndReturnForest {
12+
// tag::answer[]
13+
/**
14+
* @author D瓜哥 · https://www.diguage.com
15+
* @since 2024-09-27 15:06:39
16+
*/
17+
public List<TreeNode> delNodes(TreeNode root, int[] to_delete) {
18+
List<TreeNode> result = new ArrayList<>();
19+
Set<Integer> deletes = Arrays.stream(to_delete)
20+
.boxed().collect(Collectors.toUnmodifiableSet());
21+
TreeNode tree = dfs(root, deletes, result);
22+
if (tree != null) {
23+
result.add(tree);
24+
}
25+
return result;
26+
}
27+
28+
private TreeNode dfs(TreeNode root, Set<Integer> deletes, List<TreeNode> result) {
29+
if (root == null) {
30+
return null;
31+
}
32+
TreeNode left = dfs(root.left, deletes, result);
33+
TreeNode right = dfs(root.right, deletes, result);
34+
if (deletes.contains(root.val)) {
35+
if (left != null) {
36+
result.add(left);
37+
}
38+
if (right != null) {
39+
result.add(right);
40+
}
41+
return null;
42+
} else {
43+
if (left == null) {
44+
root.left = null;
45+
}
46+
if (right == null) {
47+
root.right = null;
48+
}
49+
return root;
50+
}
51+
}
52+
// end::answer[]
53+
}

0 commit comments

Comments
 (0)