1
1
import { printTree , TreeNode } from "./bst" ;
2
+ import { HitCounterDBG } from "./scratch_structure/hit-counter" ;
2
3
3
4
4
- function deleteNode ( root : TreeNode | null , key : number ) : TreeNode | null {
5
- if ( ! root ) {
6
- return null ;
7
- }
8
- if ( key < root . val ) {
9
- root . left = deleteNode ( root . left , key ) ;
10
- }
11
- else if ( key > root . val ) {
12
- root . right = deleteNode ( root . right , key ) ;
13
- }
14
- else {
15
- if ( ! root . left ) {
16
- return root . right ;
17
- }
18
- else if ( ! root . right ) {
19
- return root . left ;
20
- }
21
-
22
- let minNode = root . right ;
23
- while ( minNode . left ) {
24
- minNode = minNode . left ;
25
- }
26
- root . val = minNode . val ;
27
- root . right = deleteNode ( root . right , minNode . val ) ;
28
- }
29
- return root ;
30
- }
31
-
32
- function deleteNodeDBG ( ) {
33
- const tests = [
34
- {
35
- input : { root : new TreeNode ( 5 , new TreeNode ( 3 , new TreeNode ( 2 ) , new TreeNode ( 4 ) ) , new TreeNode ( 6 , null , new TreeNode ( 7 ) ) ) , key : 3 } ,
36
- result : new TreeNode ( 5 , new TreeNode ( 4 , new TreeNode ( 2 ) ) , new TreeNode ( 6 , null , new TreeNode ( 7 ) ) )
37
- } ,
38
- {
39
- input : { root : new TreeNode ( 5 , new TreeNode ( 3 ) , new TreeNode ( 6 , null , new TreeNode ( 7 ) ) ) , key : 5 } ,
40
- result : new TreeNode ( 6 , new TreeNode ( 3 ) , new TreeNode ( 7 ) )
41
- }
42
- ] ;
43
-
44
- tests . forEach ( ( test , index ) => {
45
- console . log ( `init tree` )
46
- printTree ( test . input . root )
47
- const result = deleteNode ( test . input . root , test . input . key ) ;
48
- const success = JSON . stringify ( result ) === JSON . stringify ( test . result ) ;
49
- if ( success ) {
50
- console . log ( `result` )
51
- printTree ( test . input . root )
52
- console . log ( `${ index } success` ) ;
53
- } else {
54
- console . log ( `${ index } fail` ) ;
55
- console . log ( `expected ${ test . result } ` ) ;
56
- console . log ( `got ${ result } ` ) ;
57
- }
58
- console . log ( `-------------------` )
59
- } ) ;
60
- }
61
-
5
+ HitCounterDBG ( )
0 commit comments