Skip to content

Commit b364b46

Browse files
committed
feat: add ts solution to lc problem: No.1110
1 parent 9a74e80 commit b364b46

File tree

3 files changed

+195
-0
lines changed

3 files changed

+195
-0
lines changed

solution/1100-1199/1110.Delete Nodes And Return Forest/README.md

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,4 +348,74 @@ var delNodes = function (root, to_delete) {
348348

349349
<!-- solution:end -->
350350

351+
<!-- solution:start -->
352+
353+
### Solution 2: BFS
354+
355+
<!-- tabs:start -->
356+
357+
#### TypeScript
358+
359+
```ts
360+
/**
361+
* Definition for a binary tree node.
362+
* class TreeNode {
363+
* val: number
364+
* left: TreeNode | null
365+
* right: TreeNode | null
366+
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
367+
* this.val = (val===undefined ? 0 : val)
368+
* this.left = (left===undefined ? null : left)
369+
* this.right = (right===undefined ? null : right)
370+
* }
371+
* }
372+
*/
373+
export function delNodes(root: T, to_delete: number[]): Array<T> {
374+
if (!root) return [];
375+
376+
const del = new Set(to_delete);
377+
const res: T[] = [];
378+
let q: TreeNode[] = [root];
379+
380+
while (q.length) {
381+
const qNext: TreeNode[] = [];
382+
383+
for (const node of q) {
384+
if (node.left) {
385+
qNext.push(node.left);
386+
387+
if (del.has(node.left.val)) {
388+
node.left = null;
389+
}
390+
}
391+
392+
if (node.right) {
393+
qNext.push(node.right);
394+
395+
if (del.has(node.right.val)) {
396+
node.right = null;
397+
}
398+
}
399+
400+
if (del.has(node.val)) {
401+
if (node.left) res.push(node.left);
402+
if (node.right) res.push(node.right);
403+
}
404+
}
405+
406+
q = qNext;
407+
}
408+
409+
if (!del.has(root.val)) res.push(root);
410+
411+
return res;
412+
}
413+
414+
type T = TreeNode | null;
415+
```
416+
417+
<!-- tabs:end -->
418+
419+
<!-- solution:end -->
420+
351421
<!-- problem:end -->

solution/1100-1199/1110.Delete Nodes And Return Forest/README_EN.md

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,4 +344,74 @@ var delNodes = function (root, to_delete) {
344344

345345
<!-- solution:end -->
346346

347+
<!-- solution:start -->
348+
349+
### Solution 2: BFS
350+
351+
<!-- tabs:start -->
352+
353+
#### TypeScript
354+
355+
```ts
356+
/**
357+
* Definition for a binary tree node.
358+
* class TreeNode {
359+
* val: number
360+
* left: TreeNode | null
361+
* right: TreeNode | null
362+
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
363+
* this.val = (val===undefined ? 0 : val)
364+
* this.left = (left===undefined ? null : left)
365+
* this.right = (right===undefined ? null : right)
366+
* }
367+
* }
368+
*/
369+
export function delNodes(root: T, to_delete: number[]): Array<T> {
370+
if (!root) return [];
371+
372+
const del = new Set(to_delete);
373+
const res: T[] = [];
374+
let q: TreeNode[] = [root];
375+
376+
while (q.length) {
377+
const qNext: TreeNode[] = [];
378+
379+
for (const node of q) {
380+
if (node.left) {
381+
qNext.push(node.left);
382+
383+
if (del.has(node.left.val)) {
384+
node.left = null;
385+
}
386+
}
387+
388+
if (node.right) {
389+
qNext.push(node.right);
390+
391+
if (del.has(node.right.val)) {
392+
node.right = null;
393+
}
394+
}
395+
396+
if (del.has(node.val)) {
397+
if (node.left) res.push(node.left);
398+
if (node.right) res.push(node.right);
399+
}
400+
}
401+
402+
q = qNext;
403+
}
404+
405+
if (!del.has(root.val)) res.push(root);
406+
407+
return res;
408+
}
409+
410+
type T = TreeNode | null;
411+
```
412+
413+
<!-- tabs:end -->
414+
415+
<!-- solution:end -->
416+
347417
<!-- problem:end -->
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
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+
export function delNodes(root: T, to_delete: number[]): Array<T> {
15+
if (!root) return [];
16+
17+
const del = new Set(to_delete);
18+
const res: T[] = [];
19+
let q: TreeNode[] = [root];
20+
21+
while (q.length) {
22+
const qNext: TreeNode[] = [];
23+
24+
for (const node of q) {
25+
if (node.left) {
26+
qNext.push(node.left);
27+
28+
if (del.has(node.left.val)) {
29+
node.left = null;
30+
}
31+
}
32+
33+
if (node.right) {
34+
qNext.push(node.right);
35+
36+
if (del.has(node.right.val)) {
37+
node.right = null;
38+
}
39+
}
40+
41+
if (del.has(node.val)) {
42+
if (node.left) res.push(node.left);
43+
if (node.right) res.push(node.right);
44+
}
45+
}
46+
47+
q = qNext;
48+
}
49+
50+
if (!del.has(root.val)) res.push(root);
51+
52+
return res;
53+
}
54+
55+
type T = TreeNode | null;

0 commit comments

Comments
 (0)