@@ -160,6 +160,25 @@ const canvas = document.getElementById("main-canvas") as HTMLCanvasElement;
160160 }
161161 }
162162 }
163+ function deepRight ( tree : BinaryTree ) {
164+ if ( tree . getRight ( ) ) {
165+ return deepRight ( tree . getRight ( ) )
166+ } else {
167+ return tree . getRoot ( )
168+ }
169+ }
170+ function remove ( tree : BinaryTree , value : number ) {
171+ if ( tree . getRoot ( ) === value ) {
172+ tree . setRoot ( deepRight ( tree ) ) ;
173+ } else {
174+ if ( tree . getLeft ( ) ) {
175+ remove ( tree . getLeft ( ) , value )
176+ }
177+ if ( tree . getRight ( ) ) {
178+ remove ( tree . getRight ( ) , value )
179+ }
180+ }
181+ }
163182 function drawTree ( ctx : CanvasRenderingContext2D , tree : BinaryTree , canvasWidth : number , scale : number , i = 0 , rootPosition : any = null ) {
164183 if ( tree ) {
165184 if ( rootPosition === null ) {
@@ -233,15 +252,25 @@ const canvas = document.getElementById("main-canvas") as HTMLCanvasElement;
233252
234253 drawTree ( ctx , tree , canvas . width , scale ) ;
235254
236- var number = document . getElementById ( 'insert-form-input' ) as HTMLInputElement ;
237- var numberForm = document . getElementById ( 'insert-form' ) as HTMLElement ;
255+ var insertNumber = document . getElementById ( 'insert-form-input' ) as HTMLInputElement ;
256+ var insertNumberForm = document . getElementById ( 'insert-form' ) as HTMLElement ;
257+
258+ var removeNumber = document . getElementById ( 'remove-form-input' ) as HTMLInputElement ;
259+ var removeNumberForm = document . getElementById ( 'remove-form' ) as HTMLElement ;
238260
239261 // if (numberForm.addEventListener){
240262
241263 // }
242- numberForm . addEventListener ( "submit" , function ( ) {
243- console . log ( number . value ) ;
244- insert ( tree , parseInt ( number . value ) )
264+ insertNumberForm . addEventListener ( "submit" , function ( ) {
265+ console . log ( insertNumber . value ) ;
266+ insert ( tree , parseInt ( insertNumber . value ) )
267+ drawTree ( ctx , tree , canvas . width , scale ) ;
268+ updateTraversals ( tree ) ;
269+ } , false ) ;
270+
271+ removeNumberForm . addEventListener ( "submit" , function ( ) {
272+ console . log ( removeNumber . value ) ;
273+ remove ( tree , parseInt ( removeNumber . value ) )
245274 drawTree ( ctx , tree , canvas . width , scale ) ;
246275 updateTraversals ( tree ) ;
247276 } , false ) ;
0 commit comments