1) Jaka jest różnica między drzewami AVL i drzewami gry?
Są one podobne pod względem struktury i operacji, które na nich wywołujemy. Różnica polega na tym, że w drzewach do gry, po każdej operacji, staramy się utrzymać drzewo niemal idealnie wyważone, aby przyszłe operacje wymagały mniej czasu.
2) Na jakiej podstawie wybieramy te warkocze?
Drzewa z odgałęzieniem są zawsze lepsze niż drzewa wyszukiwania binarnego, gdy aplikacja obsługuje wiele danych w drzewie, ale będzie potrzebować dostępu do podzbioru danych bardzo często niż inne. W takim przypadku dane, do których często wchodzisz, będą zbliżać się do korzenia w wyniku rozrzutu. Ponadto dostęp do dowolnego węzła można uzyskać za mniej czasu niż wcześniej.
Jako ogólną zasadę przy wybieraniu tych drzew, jeśli potrzebujesz "Średniego" czasu (n) w okresie operacji drzewa, użyj drzewa splay. Drzewo binarne nie może tego zagwarantować.
3) Jakie są pozytywne i negatywne z tych drzew?
Pozytywne dla obu jest to, że omijasz log (n) w obu tych strukturach danych teoretycznie.
Jak wspomniano, drzewa splay mają średnią log (n) w odniesieniu do wielu operacji. Oznacza to, że być może masz złożoność czasu na operację conajmniej raz w tym zestawie. Ale zostanie to zrekompensowane przy dostępie do częstych przedmiotów.
Ujemną stroną drzewa wyszukiwania binarnego jest to, że musisz mieć zawsze szczęście, aby log (n) był zawsze. Jeśli klucze nie są losowe, drzewo zmniejszy się do listy takiej jak forma z tylko jedną stroną.
4) Jakie są wyniki tych drzew pod względem wielkiej notacji O?
Drzewo rozrzutu Log (n) na Średnia dla grupy operacji drzewa. Drzewo binarne Log (n) tylko wtedy, gdy klucze są losowe.
Wyniki w środowisku wykonawczym są tutaj oczywiste. splay tree runtime profiling Różnicę czasu wykonywania można zobaczyć przy wyszukiwaniu bez rozrzucania i bez niego.
Oto miły nauczanie wideo o drzewach splay: https://youtu.be/G5QIXywcJlY Można również grać z nimi na tej stronie: https://www.cs.usfca.edu/~galles/visualization /SplayTree.html – user9589