Puu (andmestruktuur): erinevus redaktsioonide vahel
Eemaldatud sisu Lisatud sisu
Resümee puudub |
PResümee puudub |
||
1. rida:
{{Keeletoimeta|lisaja=Kuriuss|aasta=2019|kuu=veebruar}}
[[Fail:Kahendpuu.png|pisi|Kahendpuu näidis]]
'''Puu''' on infotehnoloogias andmestruktuur, kus andmed on paigutatud puukujuliselt.
Puu on andmestruktuur, kus andmed on paigutatud puukujuliselt, koosneb tippudest (nodes) ja kaartest (edges), mis ühendab tippe (viited). Tipud, mis on ühendatud kaarega üleval asuva tipu külge on lapsed (childs) ja üleval asuv tipp on sellisel juhul vanem (parent). Kõige ülemine tipp on juur (root). Tippu, millel ei ole lapsi, nimetatakse leheks (leaf). Liikudes tipust vanemasse, sealt vanemasse jne jõuame Juurde. Esivanemad on kõik tipud mis jäävad tipu ja vaadeldava juures vahepeale. Puu kõrgus (tree height) on pikim tee lehest juureni. Järjestatud puu korral on defineeritud juur ja otse juurega ühendatud tipud on esimese taseme tipud (first level nodes, juure lapsed), esimese taseme tippudega otse ühendatud tipud on teise taseme tipud (esimese taseme tippude lapsed) jne ning laste järjekord vasakut paremale on oluline. Mets on vähemalt kahest puust koosnev puude kogum.<ref>http://opiobjektid.tptlive.ee/B3/ahelloendid_ja_puud.html</ref>▼
Puu koosneb tippudest (''nodes'') ja kaartest (''edges''), mis ühendavad tippe (''viited''). Tipud, mis on ühendatud kaarega üleval asuva tipu külge on lapsed (''childs'') ja üleval asuv tipp on sel juhul vanem (''parent''). Kõige ülemine tipp on juur (''root''). Tippu, millel ei ole lapsi, nimetatakse leheks (''leaf''). Liikudes tipust vanemasse, sealt vanemasse jne jõuame juurde. Esivanemad on kõik tipud, mis jäävad tipu ja vaadeldava juures vahepeale.
▲
== Kahendpuu ==
Kahendpuu on selline puu, kus iga vanema võib olla
Kahend-otsingupuu ([https://en.wikipedia.org/wiki/Binary_search_tree binary search tree]) on kahendpuu, mis on järjestatud. Tipust vasakul on alati väiksem suurus ja tipust paremal suurem suurus.
Sellisest puust otsides võrreldakse otsitavat väärtust juurega, kui otsitav väärtus võrdub juure väärtusega, siis väärtus eksisteerib, kui aga juure väärtus ei võrdu otsitavaga, siis võrreldakse väärtust edasi, vastavalt kas vasaku või parema tippude hulgast kuni jõutakse leheni. Kui otsitav väärtus on võrdne mõne tipu väärtusega, siis on otsitav element olemas, kui aga ei leidu võrdset väärtust, siis otsitavat elementi ei ole. Selline otsimise viis on kordi kiirem kui oleks näiteks ahelloendi või massiivi läbivaatamine.
== Puude kasutus ==
16. rida ⟶ 21. rida:
Tallinna ülikooli loengumaterjalis on esimese näitena, kuidas kasutada kahendpuud, väljatoodud ülesanne, kus tuleb kujutada aritmeetilist avaldist (b+c)/a+d(e-f) puuna.
[[Fail:Nimetu.png|pisi|Ül lahendus]]
Selle ülesande lahendus on näidatud kõrval oleval pildil, selline puu väljendab sellise avaldise tehete prioriteete. Sellise puuga antud avalise väärtuse leidmiseks on vaja osata läbida puud (rekursiivselt) lõppjärjestuses. Seega on selline rekursiivne tehnika ülioluline puude õppimisel. Materjalis kasutati seda näidet puude läbimise kolme
== Puude järgnevused ==
Puu tippudest informatsiooni lugemiseks tuleb need tipud kuidagi läbida. Kuna puu on rekursiivne struktuur, siis on seda ka mitmed algoritmid, mida nende peal rakendada saab. Seda tehakse rekursiivselt igale alampuule. Kui puud läbitakse, siis käiakse igas tipus täpselt üks kord. Kolm levinumat puu läbimiseks mõeldud algoritmi on järgmised:
== Puud graafiteoorias ==
Graafi nimetatakse puuks, kui ta on sidus ja ei sisalda tsükleid. Mets on graaf, mile kõik komponendid on puud. Puu rippuvad tipud on lehed ja ülejäänud on sisetipud.
Sidusa graafi toespuuks nimetatakse sellist alamgraafi, mis sisaldab kõiki tippe ja on puu. Tegu on andmestrutuurina väga olulise graafiga, sest toesuspuu albil saame rakendada mitmeid algoritme nagu Primi algoritm ja Kruskali algoritm. Nende abil saab leida lühimat teed läbides kõik antud punktid teel.
Kaalutud puu on puu, mille igale servale on antud kaal, puude kaalustamine on kasulik, kuna see see aitab juba eelpool mainitud kahte algoritmi rakendada, kuid ka näiteks Dijkstra algoritmi, mis aitab leida lihtsalt lühima tee ühest graafi tipust teise.<ref>{{netiviide|Autor=Valdis Laan|URL=https://courses.ms.ut.ee/LTMS.00.019/2018_spring/uploads/Main/kon.pdf|Pealkiri=Diskreetne matemaatika I.|Väljaanne=|Aeg=|Kasutatud=19.01.20198|Keel=eesti}}</ref> <br><br>▼
▲Kaalutud puu on puu, mille igale servale on antud kaal, puude kaalustamine on kasulik, kuna see see aitab juba eelpool mainitud kahte algoritmi rakendada, kuid ka näiteks Dijkstra algoritmi, mis aitab leida lihtsalt lühima tee ühest graafi tipust teise.<ref>{{netiviide|Autor=Valdis Laan|URL=https://courses.ms.ut.ee/LTMS.00.019/2018_spring/uploads/Main/kon.pdf|Pealkiri=Diskreetne matemaatika I.|Väljaanne=|Aeg=|Kasutatud=19.01.20198|Keel=eesti}}</ref>
==Viited==
{{viited}}
|