Zadanie 2 – Złożone struktury danych

Zagadnienia

  • Struktura listy jedno- i dwukierunkowej
  • Struktura drzewa poszukiwań binarnych (Binary Search Tree – BST)
  • Tworzenie i usuwanie w/w struktur
  • Wyszukiwanie elementu na liście/ w drzewie
  • Usuwanie pojedynczych elementów listy/ drzewa
  • Przeglądanie drzewa w porządku wzdłużnym (preorder), poprzecznym (inorder) i wstecznym (postorder)
  • Definicja drzewa wyważonego i dokładnie wyważonego

Termin oddawania programów i wyników eksperymentów (+ wykresy): 11.04.2017
Termin dostarczenia sprawozdania (mailem pdf): 25.04.2017

Projekt

Wygeneruj n-elementowe ciągi parzystych liczb naturalnych bez powtórzeń (20 różnych wartości n, które mają być tak dobrane, żeby można było dokonać pomiaru czasu):

  • rosnący,
  • losowy,
  • metodą połowienia binarnego.

Zaimplementuj dwie struktury danych:

  • malejąco posortowaną listę dwukierunkową,
  • drzewo BST.

Dla każdego ciągu wejściowego i strktury danych przerowadź następujące eksperymenty:

  • tworzenie struktury przez wstawianie kolejnych elementów,
  • usuwania x losowych wartości,
  • dodawania x losowych wartości.

x jest losowym ciągiem nieparzystych liczb naturalnych bez powtórzeń. Wartość x, zależną od n, należy dobrać tak, aby można było dokonać pomiaru czasu np. x=n/100.

Dla przeprowadzonych eksperymentów wykonaj wykresy:

  • zależności czasu od liczby elementów (3 wykresy z 3 ciągami * 2 strukturami danych),
  • dla drzewa BST, zależności wysokości drzewa od liczby elementów (1 wykres z 3 ciągami).