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