File tree Expand file tree Collapse file tree 5 files changed +72
-8
lines changed
src/main/java/com/diguage/algo/leetcode Expand file tree Collapse file tree 5 files changed +72
-8
lines changed Original file line number Diff line number Diff line change @@ -7796,13 +7796,13 @@ TIP: **公众号的微信号是: `jikerizhi`**。__因为众所周知的原因
7796
7796
|Medium
7797
7797
|
7798
7798
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
+
7806
7806
//|{counter:codes}
7807
7807
//|{leetcode_base_url}/maximum-nesting-depth-of-two-valid-parentheses-strings/[1111. Maximum Nesting Depth of Two Valid Parentheses Strings^]
7808
7808
//|{source_base_url}/_1111_MaximumNestingDepthOfTwoValidParenthesesStrings.java[Java]
Original file line number Diff line number Diff line change @@ -29,11 +29,18 @@ image::https://assets.leetcode.com/uploads/2019/07/01/screen-shot-2019-07-01-at-
29
29
* `to_delete.length <= 1000`
30
30
* `to_delete` contains distinct values between `1` and `1000`.
31
31
32
+ == 思路分析
32
33
34
+ 利用递归,在“后序遍历”阶段,对当前阶段判断是否需要删除。
33
35
34
36
[[src-1110]]
35
37
[{java_src_attr}]
36
38
----
37
39
include::{sourcedir}/_1110_DeleteNodesAndReturnForest.java[tag=answer]
38
40
----
39
41
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
+
Original file line number Diff line number Diff line change @@ -2294,7 +2294,7 @@ include::1094-car-pooling.adoc[leveloffset=+1]
2294
2294
2295
2295
include::1109-corporate-flight-bookings.adoc[leveloffset=+1]
2296
2296
2297
- // include::1110-delete-nodes-and-return-forest.adoc[leveloffset=+1]
2297
+ include::1110-delete-nodes-and-return-forest.adoc[leveloffset=+1]
2298
2298
2299
2299
// include::1111-maximum-nesting-depth-of-two-valid-parentheses-strings.adoc[leveloffset=+1]
2300
2300
Original file line number Diff line number Diff line change 888
888
|{doc_base_url} /0892-surface-area-of-3d-shapes.adoc[题解]
889
889
|✅ 计算几个柱子的面积
890
890
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
+ |✅ 递归+深度优先
891
895
892
896
|===
893
897
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments