Red-Black stromy

11. 4. 2023

Červeno černé stromy jsou dalším typem binárních vyhledávacích stromů. Což znamená, že stále platí uspořádání stromu - všechny uzly nalevo jsou menší a všechny uzly napravo jsou větší. U červeno černých stromů přidáme každému uzlu další položku - color, která bude u nového node nastavena na červenou. Jinak může být přebarvena na černou.

Červeno černé stromy mají několik pravidel, které je třeba dodržovat, aby se strom nacházel v konzistentním stavu. Pokud se některou z úprav stave strom nekonzistentní, budeme tuto situaci neprodleně řešit.

Pravidla

Odstranění vrcholu

Odstranění vrcholu je velmi podobné odstranění vrcholu v binárním vyhledávacím stromu. Rozdělíme si operaci delete na 2 části

delete-fixup

Pokud odebreme černý uzel, pak nebude platit poslední podmínka Red Black stromu (každá cesta z uzlu do listu obsahuje stejný počer černých uzlů).

B-stromy

B strom parametrizujeme přirozeným číslem t > 2.Dále je definován následujícími podmínkami

Vyhledávání

Poměrně podobné s binárním vyhledávacícm stromem vzhledem k uspořádání, ale nyní porovnáváme vyhledávanou hodnotu s celým polem klíčů v uzlu.

Vkládání

Opět první vyhledáme uzel, kde klíč patří a následně musíme zjistit, jestli se do uzlu vleze. Pokud ano, uzel vložíme. Pokud se nám již klíč do uzlu nevejde, rozdělíme uzel, kde by měl přijít podle mediánu a vytvoříme dva nové uzly - první se vším nalevo od mediánu z uzlu a druhý se vším naprovo od mediánu. Medián umístíme do rodiče na správné místo. Pokud je rodič plný, proces opakujeme.

insertion B-tree

Mazání

Smazání klíče probíhá ve dvou fázích. V první fázi klíč smažeme a pomocí search najdeme vrchol ve kterém jsme odstraňovali.

Ve druhé fázi mazání upravujeme nekorektní počty klíčů ve vrcholech.

Úkol

Úkol bude zadán i vypracován na hodině. V případě absence mě kontaktujte.