Dzisiaj jest 25 stycznia 2025 r.
Chcę dodać własny artykuł
Reklama

Drzewo czerwono-czarne

Chcę dodać własny artykuł

Drzewo czerwono-czarne

Drzewo czerwono-czarne to struktura danych, będąca specyficznym rodzajem samoorganizującego się binarnego drzewa poszukiwań, które jest wykorzystywane w informatyce, szczególnie do implementacji tablic asocjacyjnych. Zostało wynalezione przez Rudolfa Bayera w 1972 roku, a jego współczesna nazwa oraz szczegółowe właściwości zostały opisane przez Leo J. Guibasa i Roberta Sedgewicka w 1978 roku.

Problemy tradycyjnych drzew binarnych

Podstawowe binarne drzewo poszukiwań umożliwia szybkie wyszukiwanie danych, jednak nie posiada mechanizmów równoważenia, co może prowadzić do nieefektywnej struktury z dużą głębokością. W efekcie czas operacji może być zbliżony do działania na zwykłej liście.

Właściwości drzewa czerwono-czarnego

Każdy węzeł w drzewie czerwono-czarnym ma przypisany kolor – czerwony lub czarny. Kluczowe właściwości to:

  • Każdy węzeł jest czerwony lub czarny.
  • Korzeń jest czarny.
  • Każdy liść (w tym nil) jest czarny.
  • Jeśli węzeł jest czerwony, jego dzieci muszą być czarne.
  • Każda ścieżka z węzła do liścia ma jednakową liczbę czarnych węzłów.

Te zasady zapewniają, że głębokość drzewa wynosi co najwyżej 2 log(n + 1), co sprawia, że operacje takie jak wstawianie, wyszukiwanie i usuwanie mają złożoność O(log n).

Operacje na drzewie

Podstawowe operacje reorganizacji drzewa to rotacje w lewo i w prawo, które są wykonywane w czasie O(1).

Wstawianie elementów

Wstawianie nowego elementu obejmuje trzy kroki:

  • Umieszczenie elementu w drzewie zgodnie z algorytmem dla drzew binarnych.
  • Pokolorowanie nowego węzła na czerwono.
  • Przywrócenie właściwości czerwono-czarnych.

W procesie przywracania rozpatruje się różne przypadki w zależności od koloru węzłów sąsiadujących.

Usuwanie elementów

Usuwanie węzła w drzewie czerwono-czarnym opiera się na standardowym algorytmie usuwania z drzew binarnych, z dodatkową procedurą przywracania właściwości czerwono-czarnych, jeśli usuwany węzeł jest czarny.

Podobne struktury danych

Alternatywą dla drzew czerwono-czarnych są drzewa AVL, które są prostsze w implementacji i zapewniają lepsze zrównoważenie, jednak operacje usuwania w drzewach AVL mogą być bardziej kosztowne, gdyż wymagają przejścia całej ścieżki od liścia do korzenia.