Biorąc pod uwagę moje ostatnie (nieco udane) pytanie:
Problem algorytmiczny: określenie "sesji użytkownika"
Jestem prawie pewien, że sposobem na rozwiązanie go w sposób czysty jest użycie zrównoważonego drzewa binarnego (które dałoby n log m rozwiązanie problemu, gdzie na szczęście m będzie dość mały, nawet malutki, w porównaniu do n), jak podpowiadała jedna z odpowiedzi (odpowiedź, która przychodzi z jakimś pseudo-kodem).
Moje pytanie jest proste: czy domyślny interfejs API Java ma drzewo samowyrównujące?
Jeśli nie, czy wiesz o jakiejś implementacji takiego drzewa (Apache, kolekcje Google, cokolwiek)?
Jeśli nic nie wygląda dobrze, jakie byłoby najlepsze drzewo do wdrożenia takiego zrównoważonego drzewa binarnego?
Odpowiedzi:
4 dla odpowiedzi № 1java.util.TreeSet
jest zrównoważoną implementacją drzewa. Gwarantuje czas dostępu do O (logn), modyfikując strukturę drzewa, gdy jest to konieczne, dzięki czemu nie zostanie zdegenerowany na listę.
Główne pytanie brzmi: jakie operacje potrzebujesz z tego drzewa i czy TreeSet
wspiera je.