Hledat:

Set-top-boxy Parfémy Krása Produkty pro zdraví Hodinky Elektro Šperky Nábytek Nářadí a zahrada Outdoor Počítače a notebooky
 

Strom (datová struktura)

(Přesměrováno z Strom (informatika), přímý odkaz na Strom (datová struktura))
Jednoduchý příklad neuspořádaného stromu

V informatice je strom široce využívanou datovou strukturou, která představuje stromovou strukturu s propojenými uzly.

Obsah

[editovat] Uzly ve stromu

Uzel stromu (anglicky „node“) může:

Uzly jsou navzájem spojeny „hranami“. Pokud jsou hrany orientované, nazývají se uzly připojené k jednomu uzlu jako „potomci uzlu“, nadřazený uzel je potom „rodičovský uzel“. Uzel může mít pouze jednoho rodiče, ale více potomků. Počet potomků nějakého uzlu se nazývá „stupeň uzlu“.
Vztahy mezi uzly naleznete na

Podrobnější informace naleznete v článku Strom (graf)#Vztahy mezi uzly..
Strom v informatice

[editovat] Základní prvky stromu

[editovat] Kořen stromu

[editovat] Vnitřní uzly

[editovat] Koncové uzly

Podstrom S

[editovat] Podstrom

„Podstrom“ (anglicky „subtree“) je část stromové datové struktury tvořené jedním uzlem („kořenem podstromu“) a všemi jeho potomky. Může být chápán jako kompletní strom sám o sobě. Každý uzel ve stromu může tvořit kořen podstromu.

[editovat] Hloubka, výška, šířka, úroveň a cesta

Strom má výšku 4. Uzel X leží na 3. úrovni a má hloubku 2.

Při sestavování stromové struktury je důležité sestavovat stromy s nejmenší možnou výškou, protože tím se zajistí optimální rychlost práce se strukturou.

„Vyvážený strom“ je takový strom, který má uzly rovnoměrně rozložené, tedy má nejmenší výšku. Ideální situace je taková, kdy má strom v každé hladině kromě poslední, maximální počet uzlů, a v poslední hladině má uzly co nejvíce vlevo.

[editovat] Stromové uspořádání

Uspořádaný binární strom

Stromy se dělí na dva základní typy stromů:

„Uspořádaný“ nebo také „seřazený strom“ je takový strom, ve kterém jsou všichni přímí potomci každého uzlu seřazeni. Tudíž, pokud uzel má n dětí, lze určit prvního přímého potomka, druhého přímého potomka, až n-tého přímého potomka.

U „neuspořádaného stromu“ se jedná o strom v čistě strukturálním smyslu. To znamená, že pro daný uzel nejsou uspořádáni potomci.

[editovat] Metody procházení stromu

[editovat] Procházení stromem do šířky

[editovat] Procházení stromem do hloubky

Procházení začíná v kořeni stromu a postupuje se vždy na potomky daného vrcholu. Procházení končí, když v žádné větvi (tj. v žádnem podstromu) již není následník. Viz prohledávání do hloubky.

Podle pořadí, ve kterém se prochází uzly uspořádaného stromu, se rozlišují tři metody:

Při použití metody INORDER se prochází uzly podle jejich přirozeného pořadí.

Procházení stromem do hloubky lze řešit pomocí:

[editovat] Příklad

Uspořádaný binární strom Výsledky způsobů procházení v binárním vyhledávacím stromu,

N = navštívený uzel, L = levý, R = pravý

  • Preorder (NLR): F, B, A, D, C, E, G, I, H
  • Inorder (LNR): A, B, C, D, E, F, G, H, I
  • Postorder (LRN): A, C, E, D, B, H, I, G, F
  • Procházení do šířky (po vrstvách) Level-order: F, B, G, A, D, I, C, E, H

[editovat] Reprezentace stromu

Binární strom jako pole – vztahy uzlu na potomky jsou určeny funkcemi 2i+1 a 2i+2

Je mnoho způsobů jak reprezentovat stromy. Běžné reprezentace reprezentují uzly jako záznamy na hromadě s ukazatelem na dítě nebo na rodiče nebo na oba. Případně se reprezentují jako pole prvků se vztahy mezi sebou (pomocí algoritmů), které určují jejich pozici v poli.

Často se setkáváme s reprezentací hierarchickou:

  • B
  • A
  • D
  • C
  • E
  • G
  • I
  • H

Nahlížet na hierarchii můžeme mnoha způsoby. Jedním z nich je "hnízděná množina", kterou si lze představit jako vnořené množiny. Další velmi podobný způsob je "hraniční" reprezentace.

Reprezentace stromu jako hnízděné množiny
Reprezentace stromu hraničním zobrazením

[editovat] Strom jako graf

V teorii grafů odpovídá hierarchická struktura stromu acyklickému grafu s jedním kořenem, někdy nazývaný „přímý acyklický graf“, ve kterém každý vrchol má „vstupní hranu“. Acyklický graf, který není propojen, se někdy nazývá les, protože se skládá z více stromů.

[editovat] Reprezentace stromu v SQL

Pro reprezentaci struktury v SQL se používá zpravidla jedna tabulka, ve které si ukládáme identifikaci rodičovského uzlu a identifikátor uzlu. Je-li potřeba vytvořit strom s více rodiči pro jeden uzel, tabulka se rozdělí na dvě. Jedna tabulka bude obsahovat seznam uzlů a ve druhé budou zaznamenány vazeb mezi uzly (tzv. vztah uzlů M:N). V případě binárního stromu se používá tabulka se třemi sloupci kde je zaznamenána hodnota, levý a pravý ukazatel na dítě.

Uspořádaný binární strom
Id_uzlu Id_rodiče
A B
B F
C D
D B
E D
F
G F
H I
I G

[editovat] Operace na stromech

[editovat] Stromy

[editovat] Související články

[editovat] Reference

 
Strom (datová struktura) v jiných jazycích: Dansk, English, Español, فارسی, Français, Bahasa Indonesia, Italiano, 日本語, Lietuvių, Македонски, Nederlands, ‪Norsk (bokmål)‬, Polski, Português, Русский, Српски / Srpski, ไทย, Українська, Tiếng Việt, 中文
Tento článek je převzat z české wikipedie - otevřené encyklopedie, originální článek naleznete na adrese: „http://cs.wikipedia.org/wiki/Strom_(datov%C3%A1_struktura)
Stránka byla naposledy upravena v Stránka byla naposledy editována 28. 11. 2008 v 19:31.
Veškerý text je dostupný za podmínek GNU Free Documentation License (Autorské právo pro podrobnosti).
Další služby: Portál | Katalog | Hledej | Zprávy | Počasí | Kurzy | Práce | Slovník | TV | Online hry | Java hry | SMS | Loga a melodie | Chat | Fórum | Kontakt | Set-top-boxy