1 ;;; Manually constructed tests for AVL trees.
3 :;;;-------------------------------------------------------------------------
7 :;; Starting point for the following tests.
22 :;; Counter-biased parent.
28 V:XYLA-AVL INSERT parent = (left child): ascend tree
29 V:XYLA-AVL INSERT parent + (left child)
32 V:XYLA-AVL INSERT parent = (right child): ascend tree
33 V:XYLA-AVL INSERT parent - (right child)
37 :;; Cobiased parent, outer descendant.
41 ;; (-) n ---> h + 1 (=)
45 V:XYLA-AVL INSERT parent = (left child): ascend tree
46 V:XYLA-AVL INSERT parent = (left child): ascend tree
47 V:XYLA-AVL INSERT parent -, node - (left child)
50 V:XYLA-AVL INSERT parent = (right child): ascend tree
51 V:XYLA-AVL INSERT parent = (right child): ascend tree
52 V:XYLA-AVL INSERT parent +, node + (right child)
56 :;; Cobiased parent, inner descendant.
60 ;; (+) h n ,---' `---, p
68 V:XYLA-AVL INSERT parent = (left child): ascend tree
69 V:XYLA-AVL INSERT parent = (right child): ascend tree
70 V:XYLA-AVL INSERT parent -, node +, child - (left child)
73 V:XYLA-AVL INSERT parent = (right child): ascend tree
74 V:XYLA-AVL INSERT parent = (right child): ascend tree
75 V:XYLA-AVL INSERT parent -, node +, child + (left child)
77 " 110k- 130k- 150k- D V+ 135k+
78 V:XYLA-AVL INSERT parent = (right child): ascend tree
79 V:XYLA-AVL INSERT parent -, node +, child = (left child)
83 V:XYLA-AVL INSERT parent = (right child): ascend tree
84 V:XYLA-AVL INSERT parent = (left child): ascend tree
85 V:XYLA-AVL INSERT parent +, node -, child + (right child)
88 V:XYLA-AVL INSERT parent = (left child): ascend tree
89 V:XYLA-AVL INSERT parent = (left child): ascend tree
90 V:XYLA-AVL INSERT parent +, node -, child - (right child)
92 " 350k- 330k- 310k- D V+ 325k+
93 V:XYLA-AVL INSERT parent = (left child): ascend tree
94 V:XYLA-AVL INSERT parent +, node -, child = (right child)
104 " 125k+ 135k+ D V+ 105k+
105 V:XYLA-AVL INSERT parent = (left child): ascend tree
106 V:XYLA-AVL INSERT parent = (left child): ascend tree
107 V:XYLA-AVL INSERT parent = (left child): ascend tree
108 V:XYLA-AVL INSERT parent = (left child): extend tree
110 " 325k+ 335k+ D V+ 355k+
111 V:XYLA-AVL INSERT parent = (right child): ascend tree
112 V:XYLA-AVL INSERT parent = (right child): ascend tree
113 V:XYLA-AVL INSERT parent = (right child): ascend tree
114 V:XYLA-AVL INSERT parent = (right child): extend tree
118 :;;;-------------------------------------------------------------------------
122 :;; Starting point for the following tests.
141 ;; h h - 1 h - 1 h - 1
143 V:XYLA-AVL REMOVE parent - (left child)
144 V:XYLA-AVL REMOVE parent + (right child)
145 V:XYLA-AVL REMOVE parent = (left child)
148 V:XYLA-AVL REMOVE parent + (right child)
149 V:XYLA-AVL REMOVE parent - (left child)
150 V:XYLA-AVL REMOVE parent = (right child)
159 " 120k- 140k- D V- 110k-
160 V:XYLA-AVL REMOVE parent = (left child)
162 " 320k- 340k- D V- 350k-
163 V:XYLA-AVL REMOVE parent = (right child)
167 :;; Counter-biased parent, balanced or counter-biased sibling.
171 ;; h - 1 (*) ---> (*) h
175 " 120k- 155k+ D V- 110k-
176 V:XYLA-AVL REMOVE parent +, sibling = (left child)
178 " 120k- 140k- 155k+ D V- 110k-
179 V:XYLA-AVL REMOVE parent +, sibling + (left child)
180 V:XYLA-AVL REMOVE parent = (left child)
182 " 310k- 330k- 320k- D V- 340k-
183 V:XYLA-AVL REMOVE parent -, sibling = (right child)
187 :;; Counter-biased parent, cobiased sibling.
192 ;; h - 1 (-) p ,---' `---, s
193 ;; t / \ ---> (*) (*)
195 ;; / \ h - 1 h - 1 h - 1 h - 1
196 ;; h - 1 h - 1 h - 2 h - 2
199 V:XYLA-AVL REMOVE parent +, sibling -, nibling = (left child)
200 V:XYLA-AVL REMOVE parent = (left child)
202 " 155k+ 145k+ D V- 120k-
203 V:XYLA-AVL REMOVE parent + (right child)
204 V:XYLA-AVL REMOVE parent +, sibling -, nibling + (left child)
205 V:XYLA-AVL REMOVE parent - (left child)
206 V:XYLA-AVL REMOVE shorten tree
208 " 155k+ 135k+ D V- 120k-
209 V:XYLA-AVL REMOVE parent + (right child)
210 V:XYLA-AVL REMOVE parent +, sibling -, nibling - (left child)
211 V:XYLA-AVL REMOVE parent - (left child)
212 V:XYLA-AVL REMOVE shorten tree
215 V:XYLA-AVL REMOVE parent -, sibling +, nibling = (right child)
216 V:XYLA-AVL REMOVE parent = (right child)
218 " D 305k+ 325k+ D V- 340k-
219 V:XYLA-AVL REMOVE parent - (left child)
220 V:XYLA-AVL REMOVE parent -, sibling +, nibling + (right child)
221 V:XYLA-AVL REMOVE parent + (right child)
222 V:XYLA-AVL REMOVE shorten tree
224 " D 305k+ 315k+ D V- 340k-
225 V:XYLA-AVL REMOVE parent - (left child)
226 V:XYLA-AVL REMOVE parent -, sibling +, nibling - (right child)
227 V:XYLA-AVL REMOVE parent + (right child)
228 V:XYLA-AVL REMOVE shorten tree
232 :;;;-------------------------------------------------------------------------
236 :;; Splice, short counter-biased node.
243 =_ #14 14- D ( #15-17 D V~ 14k~
244 V:XYLA-AVL JOIN short subtree (right child)
245 V:XYLA-AVL JOIN ascent, node = (right child)
246 V:XYLA-AVL JOIN extend tree (right child)
248 =_ #1-3 D ( #17-4 4- D V~ 4k~
249 V:XYLA-AVL JOIN short subtree (left child)
250 V:XYLA-AVL JOIN ascent, node = (left child)
251 V:XYLA-AVL JOIN extend tree (left child)
255 :;; Splice, standard balanced or counter-biased node.
262 =_ #15 D ( #17-19 D V~ 16k~
263 V:XYLA-AVL JOIN splice, node = (right child)
264 V:XYLA-AVL JOIN ascent, node = (right child)
265 V:XYLA-AVL JOIN extend tree (right child)
267 =_ #14 14- D ( 15+ D V~ 14k~
268 V:XYLA-AVL JOIN splice, node - (right child)
270 =_ #1-3 D ( #19-5 D V~ 4k~
271 V:XYLA-AVL JOIN splice, node = (left child)
272 V:XYLA-AVL JOIN ascent, node = (left child)
273 V:XYLA-AVL JOIN extend tree (left child)
275 =_ 1+ D ( #15-2 2- D V~ 2k~
276 V:XYLA-AVL JOIN splice, node + (left child)
280 :;; Splice, cobiased node, balanced or counter-biased parent.
285 ;; h + 1 (+) ---> h + 2 n / \
289 =_ #12 #14-17 13+ D ( 19+ D V~ 18k~
290 V:XYLA-AVL JOIN splice, node +, parent = (right child)
291 V:XYLA-AVL JOIN ascent, node + (right child)
293 =_ #8 #10-16 14- 9+ D ( 18+ D V~ 17k~
294 V:XYLA-AVL JOIN splice, node +, parent - (right child)
296 =_ 1+ D ( #19-7 #5-3 6+ D V~ 2k~
297 V:XYLA-AVL JOIN splice, node -, parent = (left child)
298 V:XYLA-AVL JOIN ascent, node - (left child)
300 =_ 1+ D ( #18-11 #9-3 5- 10+ D V~ 2k~
301 V:XYLA-AVL JOIN splice, node -, parent + (left child)
305 :;; Splice, cobiased node, cobiased parent.
309 ;; h (+) ---> (-) (=)
311 ;; h - 1 h h h - 1 h h
312 =_ #12 D ( 14+ D V~ 13k~
313 V:XYLA-AVL JOIN splice, node +, parent + (right child)
315 =_ 1+ D ( #14-3 D V~ 2k~
316 V:XYLA-AVL JOIN splice, node -, parent - (left child)
320 :;; Ascent, cobiased node.
327 =_ #13 D ( 15+ D V~ 14k~
328 V:XYLA-AVL JOIN splice, node = (right child)
329 V:XYLA-AVL JOIN ascent, node + (right child)
331 =_ 1+ D ( #15-3 D V~ 2k~
332 V:XYLA-AVL JOIN splice, node = (left child)
333 V:XYLA-AVL JOIN ascent, node - (left child)
337 :;; Ascent, counter-biased node.
341 ;; / \ c ---> h + 1 (+)
344 =_ #8 #10-16 9+ D ( 18+ D V~ 17k~
345 V:XYLA-AVL JOIN splice, node = (right child)
346 V:XYLA-AVL JOIN ascent, node - (right child)
348 =_ 1+ D ( #18-11 #9-3 10+ D V~ 2k~
349 V:XYLA-AVL JOIN splice, node = (left child)
350 V:XYLA-AVL JOIN ascent, node + (left child)
354 :;; Ascent, balanced node.
361 =_ #15 D ( 17+ D V~ 16k~
362 V:XYLA-AVL JOIN splice, node = (right child)
363 V:XYLA-AVL JOIN ascent, node = (right child)
364 V:XYLA-AVL JOIN ascent, node = (right child)
365 V:XYLA-AVL JOIN extend tree (right child)
367 =_ 1+ D ( #3-17 D V~ 2k~
368 V:XYLA-AVL JOIN splice, node = (left child)
369 V:XYLA-AVL JOIN ascent, node = (left child)
370 V:XYLA-AVL JOIN ascent, node = (left child)
371 V:XYLA-AVL JOIN extend tree (left child)
375 :;;;----- That's all, folks -------------------------------------------------