Kasutaja:Vollifred/Puu (andmestruktuur)

Lihtne järjestamata puu; sellel diagrammil 7-ga märgistatud sõlmel on kaks last, märgistustega 2 ja 6 ning üks vanem märgistusega 2. Tipus oleval juurel vanemat ei ole.

Puu on informaatikas laialdaselt kasutatud abstraktne andmetüüp (Abstract Data Type – ADT) või andmestruktuur mis rakendab seda ADTd. Puu väljendab hierarhilist puu struktuuri, millel on juurväärtus ja lastest koosnevad alampuud, kellel kõigil eksisteerib vanem. Kogu struktuur koosneb omavahel kaartega ühendatud sõlmedest (tippudest).

Puu andmestruktuuri saab defineerida rekursiivselt (lokaalselt) sõlmede koguna (algab juursõlmest), kus iga sõlm on mingist väärtusest koosnev andmestruktuur ja eksisteerib loend viidetest sõlmedele (lastele). Kusjuures eksisteerivad piirangud, et ükski viide ei esine rohkem kui üks kord ja ükski viide ei osutu juurele.

Alternatiivselt saab ka puu defineerida abstraktselt tervikuna (globaalselt) suunatud puuna, kus igale sõlmele on määratud oma väärtus. Mõlemad vaatenurgad on omamoodi kasulikud: samal ajal kui puud saab vaadata matemaatiliselt tervikuna, siis andmestruktuurina esitatuna esitatakse ja käsitletakse puud tavaliselt ühe sõlme kaupa (vastupidiselt sõlmede kogule ja sõlmedele vastavale kaarte kogule, nagu näiteks suunatud graaf). Näiteks võime vaadata puud tervikuna ja rääkida ühe kindla tipu "vanemtipust", aga üldiselt andmestruktuurina koosneb tipp ainult oma laste kogumist ja ei sisalda viidet oma vanemale (kui see eksisteerib).

Definitsioon muuda

 
Not a tree: two non-connected parts, A→B and C→D→E. There is more than one root.
 
Not a tree: undirected cycle 1-2-4-3. 4 has more than one parent (inbound edge).
 
Not a tree: cycle B→C→E→D→B. B has more than one parent (inbound edge).
 
Not a tree: cycle A→A. A is the root but it also has a parent.
 
Each linear list is trivially a tree

Puu on (tihti mittelineaarne) andmestruktuur, mis koosneb tippudest või sõlmedest ja servadest või kaartest ning ei sisalda tsüklit. Puud, mis ei sisalda ühtegi sõlme on null või tühi puu. Puu, mis ei ole tühi koosneb juurtipust ja potentsiaalselt mitmest tasemest sõlmedest, mis moodustavad hierarhia.