Skip to content

Commit c04d5e2

Browse files
authored
feat: add typescript solution to lc problem: No.270 (doocs#2872)
1 parent 3768553 commit c04d5e2

File tree

3 files changed

+125
-0
lines changed

3 files changed

+125
-0
lines changed

solution/0200-0299/0270.Closest Binary Search Tree Value/README.md

+43
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,49 @@ var closestValue = function (root, target) {
420420
};
421421
```
422422

423+
#### TypeScript
424+
425+
```ts
426+
/**
427+
* Definition for a binary tree node.
428+
* class TreeNode {
429+
* val: number
430+
* left: TreeNode | null
431+
* right: TreeNode | null
432+
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
433+
* this.val = (val===undefined ? 0 : val)
434+
* this.left = (left===undefined ? null : left)
435+
* this.right = (right===undefined ? null : right)
436+
* }
437+
* }
438+
*/
439+
function closestValue(root: TreeNode | null, target: number): number {
440+
if (!root) return Number.NaN;
441+
442+
let res = 0;
443+
let diff = Number.POSITIVE_INFINITY;
444+
445+
const dfs = (node: TreeNode | null): undefined => {
446+
if (!node) return;
447+
448+
const next = Math.abs(target - node.val);
449+
450+
if (next < diff || (next === diff && node.val < res)) {
451+
diff = next;
452+
res = node.val;
453+
}
454+
455+
node = target < node.val ? node.left : node.right;
456+
457+
return dfs(node);
458+
};
459+
460+
dfs(root);
461+
462+
return res;
463+
}
464+
```
465+
423466
<!-- tabs:end -->
424467

425468
<!-- solution:end -->

solution/0200-0299/0270.Closest Binary Search Tree Value/README_EN.md

+43
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,49 @@ var closestValue = function (root, target) {
406406
};
407407
```
408408

409+
#### TypeScript
410+
411+
```ts
412+
/**
413+
* Definition for a binary tree node.
414+
* class TreeNode {
415+
* val: number
416+
* left: TreeNode | null
417+
* right: TreeNode | null
418+
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
419+
* this.val = (val===undefined ? 0 : val)
420+
* this.left = (left===undefined ? null : left)
421+
* this.right = (right===undefined ? null : right)
422+
* }
423+
* }
424+
*/
425+
function closestValue(root: TreeNode | null, target: number): number {
426+
if (!root) return Number.NaN;
427+
428+
let res = 0;
429+
let diff = Number.POSITIVE_INFINITY;
430+
431+
const dfs = (node: TreeNode | null): undefined => {
432+
if (!node) return;
433+
434+
const next = Math.abs(target - node.val);
435+
436+
if (next < diff || (next === diff && node.val < res)) {
437+
diff = next;
438+
res = node.val;
439+
}
440+
441+
node = target < node.val ? node.left : node.right;
442+
443+
return dfs(node);
444+
};
445+
446+
dfs(root);
447+
448+
return res;
449+
}
450+
```
451+
409452
<!-- tabs:end -->
410453

411454
<!-- solution:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
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 closestValue(root: TreeNode | null, target: number): number {
16+
if (!root) return Number.NaN;
17+
18+
let res = 0;
19+
let diff = Number.POSITIVE_INFINITY;
20+
21+
const dfs = (node: TreeNode | null): undefined => {
22+
if (!node) return;
23+
24+
const next = Math.abs(target - node.val);
25+
26+
if (next < diff || (next === diff && node.val < res)) {
27+
diff = next;
28+
res = node.val;
29+
}
30+
31+
node = target < node.val ? node.left : node.right;
32+
33+
return dfs(node);
34+
};
35+
36+
dfs(root);
37+
38+
return res;
39+
}

0 commit comments

Comments
 (0)