@@ -48,6 +48,9 @@ const canvas = document.getElementById("main-canvas") as HTMLCanvasElement;
4848 setParent ( node : BinaryTree ) {
4949 this . parent = node ;
5050 }
51+ clearParent ( ) {
52+ this . parent = null ;
53+ }
5154
5255 removeChild ( node : BinaryTree ) {
5356 if ( this . left && node . getRoot ( ) === this . left . getRoot ( ) ) {
@@ -57,6 +60,11 @@ const canvas = document.getElementById("main-canvas") as HTMLCanvasElement;
5760 }
5861 }
5962
63+ removeAllChildren ( ) {
64+ this . left = null ;
65+ this . right = null ;
66+ }
67+
6068 insertLeft ( num : number ) {
6169 if ( this . left === null ) {
6270 this . left = new BinaryTree ( num ) ;
@@ -182,8 +190,26 @@ const canvas = document.getElementById("main-canvas") as HTMLCanvasElement;
182190 tree . setRoot ( tree . getRight ( ) . getRoot ( ) ) ;
183191 tree . removeChild ( tree . getRight ( ) ) ;
184192 } else if ( tree . getRight ( ) == null && tree . getLeft ( ) ) {
185- tree . setRoot ( tree . getLeft ( ) . getRoot ( ) ) ;
186- tree . removeChild ( tree . getLeft ( ) ) ;
193+ let new_left = tree . getLeft ( ) . getLeft ( ) ;
194+ let new_right = tree . getLeft ( ) . getRight ( ) ;
195+
196+ let new_root = tree . getLeft ( ) . getRoot ( ) || tree . getRoot ( ) ;
197+
198+ console . log ( new_root ) ;
199+
200+ tree . setRoot ( new_root ) ;
201+ if ( new_right ) {
202+ tree . setRight ( new_right ) ;
203+ } else {
204+ tree . removeAllChildren ( ) ;
205+ }
206+
207+ if ( new_left ) {
208+ tree . setLeft ( new_left ) ;
209+ } else {
210+ tree . removeAllChildren ( ) ;
211+ }
212+ tree . clearParent ( ) ;
187213 } else {
188214 let minimum = minRoot ( tree . getRight ( ) )
189215 remove ( tree , minimum ) ;
@@ -212,14 +238,14 @@ const canvas = document.getElementById("main-canvas") as HTMLCanvasElement;
212238 drawNode ( ctx , tree . getLeft ( ) . getRoot ( ) , leftPosition ) ;
213239 connectPoints ( ctx , rootPosition , leftPosition ) ;
214240 drawTree ( ctx , tree . getLeft ( ) , canvasWidth , scale , i + 1 , leftPosition ) ;
215- }
241+ }
216242 if ( tree . getRight ( ) ) {
217243 let rightPosition = new Vector2D ( rootPosition . x + ( 100 / ( i + 1 ) ) * scale , rootPosition . y + 50 ) ;
218244
219245 drawNode ( ctx , tree . getRight ( ) . getRoot ( ) , rightPosition ) ;
220246 connectPoints ( ctx , rootPosition , rightPosition ) ;
221247 drawTree ( ctx , tree . getRight ( ) , canvasWidth , scale , i + 1 , rightPosition ) ;
222- }
248+ }
223249 }
224250 }
225251 function updateTraversals ( tree : BinaryTree ) {
0 commit comments