Skip to content

Commit 6b19b8c

Browse files
committed
https://leetcode.cn/problems/minimum-number-of-operations-to-sort-a-binary-tree-by-level
1 parent 9989ec2 commit 6b19b8c

File tree

4 files changed

+102
-46
lines changed

4 files changed

+102
-46
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ Step 2. Add the dependency
4545

4646
<summary>展开查看</summary>
4747

48+
https://leetcode.cn/problems/minimum-number-of-operations-to-sort-a-binary-tree-by-level
49+
4850
https://leetcode.cn/problems/B1IidL
4951

5052
https://leetcode.cn/problems/number-of-subarrays-with-lcm-equal-to-k

deno.lock

Lines changed: 69 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

insert-into-a-binary-search-tree/readme.md

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,6 @@ class Solution {
2121
```
2222

2323
```kotlin []
24-
/**
25-
* Example:
26-
* var ti = TreeNode(5)
27-
* var v = ti.`val`
28-
* Definition for a binary tree node.
29-
* class TreeNode(var `val`: Int) {
30-
* var left: TreeNode? = null
31-
* var right: TreeNode? = null
32-
* }
33-
*/
34-
3524
class Solution {
3625
fun insertIntoBST(root: TreeNode?, `val`: Int): TreeNode? {
3726
if (root == null) return TreeNode(`val`)
@@ -43,20 +32,6 @@ class Solution {
4332
```
4433

4534
```typescript []
46-
/**
47-
* Definition for a binary tree node.
48-
* class TreeNode {
49-
* val: number
50-
* left: TreeNode | null
51-
* right: TreeNode | null
52-
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
53-
* this.val = (val===undefined ? 0 : val)
54-
* this.left = (left===undefined ? null : left)
55-
* this.right = (right===undefined ? null : right)
56-
* }
57-
* }
58-
*/
59-
6035
function insertIntoBST(root: TreeNode | null, val: number): TreeNode | null {
6136
if (root === null) return { val, left: null, right: null };
6237
if (root.val > val) root.left = insertIntoBST(root.left, val);
@@ -115,19 +90,6 @@ class Solution
11590
```
11691

11792
```csharp []
118-
/**
119-
* Definition for a binary tree node.
120-
* public class TreeNode {
121-
* public int val;
122-
* public TreeNode left;
123-
* public TreeNode right;
124-
* public TreeNode(int val=0, TreeNode left=null, TreeNode right=null) {
125-
* this.val = val;
126-
* this.left = left;
127-
* this.right = right;
128-
* }
129-
* }
130-
*/
13193
public class Solution {
13294
public TreeNode InsertIntoBST(TreeNode root, int val) {
13395

@@ -157,14 +119,6 @@ class Solution:
157119
```
158120

159121
```scala []
160-
/**
161-
* Definition for a binary tree node.
162-
* class TreeNode(_value: Int = 0, _left: TreeNode = null, _right: TreeNode = null) {
163-
* var value: Int = _value
164-
* var left: TreeNode = _left
165-
* var right: TreeNode = _right
166-
* }
167-
*/
168122
object Solution {
169123
def insertIntoBST(root: TreeNode, `val`: Int): TreeNode = {
170124
if (root != null) {
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { TreeNode } from "../binary-tree-inorder-traversal/TreeNode.ts";
2+
import levelOrder from "../binary-tree-level-order-traversal/index.ts";
3+
4+
export default function minimumOperations(root: TreeNode | null): number {
5+
const levels = levelOrder(root);
6+
const operations = levels.map(minSwaps);
7+
return operations.reduce((p, c) => p + c, 0);
8+
}
9+
function minSwaps(nums: number[]): number {
10+
const nums1 = [...nums];
11+
nums1.sort((a, b) => a - b);
12+
13+
const map = new Map(nums1.map((v, i) => [v, i]));
14+
15+
const len = nums.length;
16+
let loops = 0;
17+
const flags = new Array(len).fill(false);
18+
19+
for (let i = 0; i < len; i++) {
20+
if (!flags[i]) {
21+
let j = i;
22+
while (!flags[i]) {
23+
j = map.get(nums[j]) ?? 0;
24+
flags[j] = true;
25+
}
26+
loops++;
27+
}
28+
}
29+
30+
return len - loops;
31+
}

0 commit comments

Comments
 (0)