Skip to content

Commit c382c32

Browse files
committed
Time: 66 ms (50.00%), Space: 66.3 MB (63.70%) - LeetHub
1 parent b9c82e4 commit c382c32

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
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 int minimumOperations(TreeNode root) {
18+
int count = 0;
19+
Queue<TreeNode> q = new LinkedList<>();
20+
q.offer(root);
21+
while(!q.isEmpty()) {
22+
int size = q.size();
23+
List<Integer> list = new ArrayList<>();
24+
while(size-- > 0) {
25+
TreeNode node = q.poll();
26+
if(node.left != null) {
27+
q.offer(node.left);
28+
list.add(node.left.val);
29+
}
30+
if(node.right != null) {
31+
q.offer(node.right);
32+
list.add(node.right.val);
33+
}
34+
}
35+
count += helper(list);
36+
}
37+
38+
return count;
39+
}
40+
41+
int helper(List<Integer> list) {
42+
int swaps = 0;
43+
int[] sorted = new int[list.size()];
44+
for(int i=0; i<sorted.length; i++) sorted[i] = list.get(i);
45+
Arrays.sort(sorted);
46+
Map<Integer, Integer> ind = new HashMap<>();
47+
for(int i=0; i<list.size(); i++) ind.put(list.get(i), i);
48+
49+
for(int i=0; i<list.size(); i++) {
50+
if(list.get(i) != sorted[i]) {
51+
swaps++;
52+
ind.put(list.get(i), ind.get(sorted[i]));
53+
list.set(ind.get(sorted[i]), list.get(i));
54+
}
55+
}
56+
return swaps;
57+
}
58+
}

0 commit comments

Comments
 (0)