Drzewa
Celem laboratorium jest implementacja drzewa binarnego oraz drzewa wyszukiwań binarnych z jawnymi niezmiennikami, analizą kosztu operacji i testami przypadków brzegowych.
1. Model drzewa binarnego
Węzeł przechowuje wartość oraz odwołania do lewego i prawego poddrzewa. Puste poddrzewo reprezentuj wartością None. Oddziel strukturę węzła od operacji udostępnianych przez drzewo.
2. Drzewo wyszukiwań binarnych
Przyjmij niezmiennik: wszystkie klucze w lewym poddrzewie są mniejsze od klucza węzła, a w prawym większe. Jawnie określ politykę dla duplikatów.
search(key)
insert(key)
minimum()
maximum()
3. Usuwanie węzłów
Usuwanie wymaga rozpatrzenia trzech przypadków: liścia, węzła z jednym dzieckiem oraz węzła z dwojgiem dzieci. W trzecim przypadku można użyć następnika inorder, czyli najmniejszego elementu prawego poddrzewa.
4. Złożoność a wysokość
| Operacja BST | Drzewo zrównoważone | Przypadek skrajny |
|---|---|---|
| wyszukiwanie | Θ(log n) | Θ(n) |
| wstawianie | Θ(log n) | Θ(n) |
| usuwanie | Θ(log n) | Θ(n) |
5. Walidacja niezmiennika
6. Sprawozdanie
- Przyjęta reprezentacja i polityka duplikatów.
- Implementacja przejść, wyszukiwania, wstawiania i usuwania.
- Testy trzech przypadków usuwania oraz przypadków brzegowych.
- Porównanie wysokości i kosztu operacji dla różnych kolejności danych.
- Opis walidacji niezmiennika BST.
- Opis użycia AI albo informacja, że AI nie użyto.
Przykład opisu AI: „Użyłem modelu językowego do wygenerowania propozycji przypadków testowych dla usuwania w BST. Implementację i oczekiwane wyniki przygotowałem samodzielnie, a przypadki zweryfikowałem przez kontrolę inorder i walidację przedziałów.”
Źródła
- T. H. Cormen, C. E. Leiserson, R. L. Rivest i C. Stein, Introduction to Algorithms, wyd. 4, MIT Press, 2022.
- A. Levitin, Introduction to the Design and Analysis of Algorithms, wyd. 3, Pearson, 2022.