File tree 3 files changed +125
-0
lines changed
solution/0200-0299/0270.Closest Binary Search Tree Value
3 files changed +125
-0
lines changed Original file line number Diff line number Diff line change @@ -420,6 +420,49 @@ var closestValue = function (root, target) {
420
420
};
421
421
```
422
422
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
+
423
466
<!-- tabs: end -->
424
467
425
468
<!-- solution: end -->
Original file line number Diff line number Diff line change @@ -406,6 +406,49 @@ var closestValue = function (root, target) {
406
406
};
407
407
```
408
408
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
+
409
452
<!-- tabs: end -->
410
453
411
454
<!-- solution: end -->
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments