Binární strom je nelineární datová struktura, ve které je každý prvek (uzel) spojen s nejvýše dvěma dalšími uzly, které označujeme jako levý syn a pravý syn.
Tato struktura se používá pro efektivní vyhledávání, třídění dat, reprezentaci hierarchií nebo při kompresi dat (např. Huffmanovo kódování).
Abychom pochopili práci se stromy, musíme definovat jejich části:
V praxi se setkáváme s různými variantami podle toho, jak jsou uzly uspořádány:
| Typ | Charakteristika |
|---|---|
| Plný binární strom | Každý uzel má buď 0, nebo 2 potomky (nikdy jen jednoho). |
| Vyvážený strom | Rozdíl výšek levého a pravého podstromu každého uzlu je minimální. Zajišťuje rychlé operace. |
| Binární vyhledávací strom (BST) | Pro každý uzel platí: všechny hodnoty v levém podstromu jsou menší a v pravém větší než hodnota uzlu. |
BST (Binary Search Tree) je nejpoužívanější formou binárního stromu díky své efektivitě při vyhledávání.
Představte si, že hledáte číslo 15:
1. Začnete u kořene (např. číslo **20**). 2. Protože 15 < 20, jdete do **levého** podstromu. 3. Narazíte na uzel s hodnotou **10**. 4. Protože 15 > 10, jdete do **pravého** podstromu. 5. Narazíte na uzel **15** – prvek nalezen.
Díky tomuto principu se při každém kroku eliminujeme polovinu zbývajících dat (podobně jako u binárního vyhledávání v poli).
Abychom mohli se všemi daty ve stromu pracovat (např. je vypsat), musíme stromem „projít“. Existují tři hlavní způsoby:
Výhody:
Nevýhody:
Související pojmy: B-strom, Indexování, Databáze, Algoritmus, Rekurze, Huffmanovo kódování.