File tree 1 file changed +48
-0
lines changed
1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for a binary tree node.
3
+ * public class TreeNode {
4
+ * int val;
5
+ * TreeNode left;
6
+ * TreeNode right;
7
+ * TreeNode() {}
8
+ * TreeNode(int val) { this.val = val; }
9
+ * TreeNode(int val, TreeNode left, TreeNode right) {
10
+ * this.val = val;
11
+ * this.left = left;
12
+ * this.right = right;
13
+ * }
14
+ * }
15
+ */
16
+ class Solution {
17
+ public TreeNode correctBinaryTree (TreeNode root ) {
18
+ Queue <Pair > queue = new LinkedList <>();
19
+ queue .add (new Pair (root , null ));
20
+ while (!queue .isEmpty ()) {
21
+ int size = queue .size ();
22
+ Set <TreeNode > visited = new HashSet <>();
23
+ for (int i = 0 ; i < size ; i ++) {
24
+ Pair pair = queue .remove ();
25
+ TreeNode node = pair .node ();
26
+ TreeNode parent = pair .parent ();
27
+ if (visited .contains (node .right )) {
28
+ if (parent .left == node ) {
29
+ parent .left = null ;
30
+ } else {
31
+ parent .right = null ;
32
+ }
33
+ return root ;
34
+ }
35
+ visited .add (node );
36
+ if (node .right != null ) {
37
+ queue .add (new Pair (node .right , node ));
38
+ }
39
+ if (node .left != null ) {
40
+ queue .add (new Pair (node .left , node ));
41
+ }
42
+ }
43
+ }
44
+ return root ;
45
+ }
46
+
47
+ private static record Pair (TreeNode node , TreeNode parent ) {}
48
+ }
You can’t perform that action at this time.
0 commit comments