Strom a kořenový strom
-
Strom je souvislý neorientovaný graf bez kružnic
-
Graf je souvislý, pokud mezi libovolnou dvojicí různých uzlů existuje cesta
-
Graf obsahuje kružnici, pokud existuje tah, ve kterém je první a poslední vrchol totožný a jinak jsou všechny vrcholy vzájemně různé
-
Kořenový strom = jeden uzel je označen jako kořen tím ve stromu získáme směr (dolů)
-
Věta: V binárním stromu výšky obsahujícím vrcholů platí
Binární vyhledávací stromy a operace s nimi
- Binární (kořenový) strom, kde v uzlech jsou uloženy další údaje, zejména však klíč v položce key
- Udržujeme explicitní pointery na potomky a rodiče:
left
na levého potomka (levý podstrom),right
na pravého potomka (pravý podstrom),p
na rodiče - Pro každý vrchol v tomto stromu platí:
- Pokud je vrchol v levém podstromu vrcholu , pak
y.key < x.key
. - Pokud je vrchol v pravém podstromu vrcholu , pak
y.key > x.key
.
- Pokud je vrchol v levém podstromu vrcholu , pak
- Implementace:
Operace s binárními stromy
Průchod stromem
- (analogie průchodu do hloubky)
Vyhledávání
- Porovnávám klíč s klíčem vrcholu, podle výsledku pokračuji do levého nebo do pravého podstromu
Hledání minimum, maximum
Hledání Pořádkového následníka a pořádkového předchůdce
-
Pořádkový následník uzlu je uzel, který má v množině nejmenší klíč. Pokud je tato množina prázdná, pořádkový následník neexistuje.
-
Pořádkový předchůdce je duální pojem (otočíme znaménka porovnání), operace jeho nalezení a důkaz správnosti je analogický
Tvrzení
Přidání uzlu Insert
- Idea: Hledáme jako při vyhledávání. Přidáme na místo, kde by bylo vyhledávání neúspěšné
- Složitost:
- Tvar a výška stromu závisí na pořadí, ve kterém je vkládáme
Odebrání uzlu Delete
- Smazání uzlu ze stromu
- nemá potomky ( je list)
- má jednoho potomka
- má dva potomky
Navigace
Předchozí: Vyhledávání v lineárních datových strukturách Následující: AVL stromy, operace a jejich složitost Celý okruh: 1. Teoretické základy informačních technologií