Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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‎

Lines changed: 39 additions & 0 deletions
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‎

Lines changed: 39 additions & 0 deletions
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
### **...**
Lines changed: 40 additions & 0 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /