Skip to content

Commit 5487e5b

Browse files
committed
2471
1 parent 20a1a07 commit 5487e5b

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode
3+
# attr_accessor :val, :left, :right
4+
# def initialize(val = 0, left = nil, right = nil)
5+
# @val = val
6+
# @left = left
7+
# @right = right
8+
# end
9+
# end
10+
# @param {TreeNode} root
11+
# @return {Integer}
12+
def minimum_operations(root)
13+
count = 0
14+
queue = [root]
15+
until queue.empty?
16+
sorted_index = queue.map.with_index { |node, i| [node.val, i] }.sort_by(&:first).map(&:last)
17+
18+
(0...sorted_index.size).each { |i|
19+
while (j = sorted_index[i]) != i
20+
count += 1
21+
sorted_index[i], sorted_index[j] = sorted_index[j], sorted_index[i]
22+
end
23+
}
24+
25+
next_queue = []
26+
queue.each { |node|
27+
next_queue << node.left if node.left
28+
next_queue << node.right if node.right
29+
}
30+
queue = next_queue
31+
end
32+
33+
count
34+
end

0 commit comments

Comments
 (0)