11import { printTree , TreeNode } from "./bst" ;
2+ import { HitCounterDBG } from "./scratch_structure/hit-counter" ;
23
34
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