Zadanie 4. Drzewa AVL.

Transkrypt

Zadanie 4. Drzewa AVL.
ASD – Z04
Zadanie 4. Drzewa AVL.
4 punkty
28.10 – ogłoszone
do 04.11 - omówione
do 18.11 – oddane
Opis problemu.
Należy zorganizować drzewo AVL różnych liczb naturalnych.
Pojedynczy węzeł drzewa jest strukturą danych zawierającą
konieczne pola: INF[v]= klucz (liczba naturalna), LFT[v]=
odsyłacz do lewego potomka, RGT[v]= odsyłacz do prawego
potomka. Można ponadto użyć pól dodatkowych: UP[v]= odsyłacz
do rodzica, H[v]= wysokość lub DH[v]= różnica wysokości.
Jeżeli użyte zostanie pole UP[v], to w metodach nie można
posłużyć się rekurencją. W programie należy koniecznie
wyodrębnić metody (funkcje, procedury) SEARCH, INSERT, DELETE
oraz potrzebne rotacje spośród: rotL, rotR, rotLL, rotLR,
rotRL, rotRR (zgodnie z oznaczeniami z wykładu, złożoność
rotacji powinna być stała).
Przykładowy przebieg działania programu.
Program czyta z klawiatury kolejną liczbę naturalną. Wstawia
ją do drzewa AVL gdy jej tam nie ma, a wyrzuca ją z drzewa,
gdy już w nim jest. Oprócz liczb daną dla programu mogą być
litery: p = prezentacja drzewa, q = koniec programu.
Prezentacji drzewa można dokonać na jeden ze sposobów:
[1] – wypisanie wierzchołków w kolejności preorder,
[2] – wypisanie wierzchołków w kolejności postorder,
[3] – rysunek drzewa poziomo w grafice znakowej;
[4] – rysunek drzewa pionowo w grafice znakowej.
Student wybiera (lub ma wyznaczany) dokładnie
jeden ze sposobów prezentacji drzewa.
1
Przykład
Wprowadzane liczby:
360
350
340
330
320
P
prezentacja.1 = preorder:
350, 330, 320, 340, 360
prezentacja.2 = postorder:
320, 340, 330, 360, 350
prezentacja.3 = rysunek poziomy
350
.-------^-------.
330
360
.---^---.
320
340
prezentacja.4 = rysunek pionowy
320
330
340
350
360
2

Podobne dokumenty