@@ -165,4 +165,65 @@ describe('AvlTree', () => {
165165        null ,  null ,  null ,  null ,  null ,  null ] ) ; 
166166    } ) ; 
167167  } ) ; 
168+ 
169+   describe ( 'balancing to the left' ,  ( )  =>  { 
170+     let  n32 ; 
171+     beforeEach ( ( )  =>  { 
172+       n32  =  tree . add ( 32 ) ; 
173+       tree . add ( 8 ) ; 
174+       tree . add ( 64 ) ; 
175+       tree . add ( 4 ) ; 
176+       tree . add ( 16 ) ; 
177+       tree . add ( 48 ) ; 
178+       tree . add ( 128 ) ; 
179+       tree . add ( 2 ) ; 
180+       tree . add ( 6 ) ; 
181+       tree . add ( 10 ) ; 
182+       tree . add ( 20 ) ; 
183+     } ) ; 
184+ 
185+     it ( 'should have all nodes' ,  ( )  =>  { 
186+       expect ( tree . toArray ( ) ) . toEqual ( [ 32 ,  8 ,  64 ,  4 ,  16 ,  48 ,  128 ,  2 ,  6 ,  10 ,  20 , 
187+         null ,  null ,  null ,  null ,  null ,  null ,  null ,  null ,  null ,  null ,  null ,  null ] ) ; 
188+     } ) ; 
189+ 
190+     it ( 'should rebalance when removing' ,  ( )  =>  { 
191+       tree . remove ( 64 ) ; 
192+       expect ( tree . toArray ( ) ) . toEqual ( [ 32 ,  8 ,  128 ,  4 ,  16 ,  48 ,  null ,  2 ,  6 ,  10 ,  20 , 
193+         null ,  null ,  null ,  null ,  null ,  null ,  null ,  null ,  null ,  null ] ) ; 
194+       expect ( n32 . balanceFactor ) . toBe ( 1 ) ; 
195+       expect ( n32 . right . balanceFactor ) . toBe ( 1 ) ; 
196+       expect ( n32 . left . balanceFactor ) . toBe ( 0 ) ; 
197+ 
198+       tree . remove ( 48 ) ; 
199+       expect ( tree . toArray ( ) ) . toEqual ( [ 8 ,  4 ,  32 ,  2 ,  6 ,  16 ,  128 ,  null ,  null ,  null ,  null ,  10 ,  20 , 
200+         null ,  null ,  null ,  null ,  null ,  null ] ) ; 
201+     } ) ; 
202+   } ) ; 
203+ 
204+   describe ( 'balancing to the right' ,  ( )  =>  { 
205+     beforeEach ( ( )  =>  { 
206+       tree . add ( 8 ) ; 
207+       tree . add ( 4 ) ; 
208+       tree . add ( 32 ) ; 
209+       tree . add ( 2 ) ; 
210+       tree . add ( 16 ) ; 
211+       tree . add ( 64 ) ; 
212+       tree . add ( 10 ) ; 
213+       tree . add ( 20 ) ; 
214+       tree . add ( 60 ) ; 
215+       tree . add ( 70 ) ; 
216+     } ) ; 
217+ 
218+     it ( 'should build the tree' ,  ( )  =>  { 
219+       expect ( tree . toArray ( ) ) . toEqual ( [ 8 ,  4 ,  32 ,  2 ,  null ,  16 ,  64 ,  null ,  null ,  10 ,  20 ,  60 ,  70 , 
220+         null ,  null ,  null ,  null ,  null ,  null ,  null ,  null ] ) ; 
221+     } ) ; 
222+ 
223+     it ( 'should rebalance right side' ,  ( )  =>  { 
224+       tree . remove ( 2 ) ; 
225+       expect ( tree . toArray ( ) ) . toEqual ( [ 32 ,  8 ,  64 ,  4 ,  16 ,  60 ,  70 ,  null ,  null ,  10 ,  20 , 
226+         null ,  null ,  null ,  null ,  null ,  null ,  null ,  null ] ) ; 
227+     } ) ; 
228+   } ) ; 
168229} ) ; 
0 commit comments