Skip to content

Commit 040351e

Browse files
committed
feat: add ts solution to lc problem: No.2385
No.2385.Amount of Time for Binary Tree to Be Infected
1 parent b35833e commit 040351e

File tree

3 files changed

+118
-0
lines changed

3 files changed

+118
-0
lines changed

solution/2300-2399/2385.Amount of Time for Binary Tree to Be Infected/README.md

+39
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,46 @@ func amountOfTime(root *TreeNode, start int) int {
276276
### **TypeScript**
277277

278278
```ts
279+
/**
280+
* Definition for a binary tree node.
281+
* class TreeNode {
282+
* val: number
283+
* left: TreeNode | null
284+
* right: TreeNode | null
285+
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
286+
* this.val = (val===undefined ? 0 : val)
287+
* this.left = (left===undefined ? null : left)
288+
* this.right = (right===undefined ? null : right)
289+
* }
290+
* }
291+
*/
279292

293+
function amountOfTime(root: TreeNode | null, start: number): number {
294+
const map = new Map<number, number[]>();
295+
const create = ({ val, left, right }: TreeNode) => {
296+
if (left != null) {
297+
map.set(val, [...(map.get(val) ?? []), left.val]);
298+
map.set(left.val, [...(map.get(left.val) ?? []), val]);
299+
create(left);
300+
}
301+
if (right != null) {
302+
map.set(val, [...(map.get(val) ?? []), right.val]);
303+
map.set(right.val, [...(map.get(right.val) ?? []), val]);
304+
create(right);
305+
}
306+
};
307+
create(root);
308+
const dfs = (st: number, fa: number) => {
309+
let res = 0;
310+
for (const v of map.get(st) ?? []) {
311+
if (v !== fa) {
312+
res = Math.max(res, dfs(v, st) + 1);
313+
}
314+
}
315+
return res;
316+
};
317+
return dfs(start, -1);
318+
}
280319
```
281320

282321
### **...**

solution/2300-2399/2385.Amount of Time for Binary Tree to Be Infected/README_EN.md

+39
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,46 @@ func amountOfTime(root *TreeNode, start int) int {
262262
### **TypeScript**
263263

264264
```ts
265+
/**
266+
* Definition for a binary tree node.
267+
* class TreeNode {
268+
* val: number
269+
* left: TreeNode | null
270+
* right: TreeNode | null
271+
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
272+
* this.val = (val===undefined ? 0 : val)
273+
* this.left = (left===undefined ? null : left)
274+
* this.right = (right===undefined ? null : right)
275+
* }
276+
* }
277+
*/
265278

279+
function amountOfTime(root: TreeNode | null, start: number): number {
280+
const map = new Map<number, number[]>();
281+
const create = ({ val, left, right }: TreeNode) => {
282+
if (left != null) {
283+
map.set(val, [...(map.get(val) ?? []), left.val]);
284+
map.set(left.val, [...(map.get(left.val) ?? []), val]);
285+
create(left);
286+
}
287+
if (right != null) {
288+
map.set(val, [...(map.get(val) ?? []), right.val]);
289+
map.set(right.val, [...(map.get(right.val) ?? []), val]);
290+
create(right);
291+
}
292+
};
293+
create(root);
294+
const dfs = (st: number, fa: number) => {
295+
let res = 0;
296+
for (const v of map.get(st) ?? []) {
297+
if (v !== fa) {
298+
res = Math.max(res, dfs(v, st) + 1);
299+
}
300+
}
301+
return res;
302+
};
303+
return dfs(start, -1);
304+
}
266305
```
267306

268307
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* class TreeNode {
4+
* val: number
5+
* left: TreeNode | null
6+
* right: TreeNode | null
7+
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
8+
* this.val = (val===undefined ? 0 : val)
9+
* this.left = (left===undefined ? null : left)
10+
* this.right = (right===undefined ? null : right)
11+
* }
12+
* }
13+
*/
14+
15+
function amountOfTime(root: TreeNode | null, start: number): number {
16+
const map = new Map<number, number[]>();
17+
const create = ({ val, left, right }: TreeNode) => {
18+
if (left != null) {
19+
map.set(val, [...(map.get(val) ?? []), left.val]);
20+
map.set(left.val, [...(map.get(left.val) ?? []), val]);
21+
create(left);
22+
}
23+
if (right != null) {
24+
map.set(val, [...(map.get(val) ?? []), right.val]);
25+
map.set(right.val, [...(map.get(right.val) ?? []), val]);
26+
create(right);
27+
}
28+
};
29+
create(root);
30+
const dfs = (st: number, fa: number) => {
31+
let res = 0;
32+
for (const v of map.get(st) ?? []) {
33+
if (v !== fa) {
34+
res = Math.max(res, dfs(v, st) + 1);
35+
}
36+
}
37+
return res;
38+
};
39+
return dfs(start, -1);
40+
}

0 commit comments

Comments
 (0)