Stablo (struktura podataka)
<s>Pojam „stablo“ se u programiranju koristi da označi strukturu podataka koja ima „razgranatu“ strukturu, po uzoru na pojam stabla u teoriji grafova.</s>

<s>Stablo se često koristi kao glavni oblik nekog spremišta podataka, zbog lakog pisanja odgovarajućeg koda kroz korišćenje rekurzije, brzog upisivanja podataka i brzog pristupa traženim podacima.</s><s>Najčešće korišćeno stablo je stablo u kojem svaki čvor mora imati tačno dvije grane, tj. binarno stablo.</s>

<s>Terminologija 
U terminologiji stabla kao strukture podataka, koriste se slični pojmovi kao kod običnog stabla.</s><s>Tako, čvor koji ne sadrži granu nijednog drugog čvora a koji posredno ili neposredno sadrži sve druge čvorove naziva se „korijen“.</s><s>Čvorovi koji ne sadrže nijednu granu, tj. nalaze se na „vrhu“ stabla, nazivaju se „listovima“</s>

<s>Takođe, postoji terminologija „roditelj-dijete“, u kojoj se čvor A koji sadrži čvor B naziva roditeljem čvora B, dok se čvor B naziva djetetom čvora A.</s>

<s>Konstrukcija 
Stablo se u programiranju ostvaruje korišćenjem pokazivača da bi se usmjerilo ka odgovarajućim granama.</s><s>Naime, svaki čvor se konstruiše tako da posjeduje mogućnost čuvanja jedne ili više adresa drugih čvorova, što omogućava „prelaženje“ iz jednog čvora u drugi, tj. kretanje po stablu.</s>

<s>Budući da stablo može imati neograničen broj čvorova (uslovno govoreći, zbog ograničene količine memorije na računarskim uređajima), iterativno rješenje konstrukcije i korišćenja stabla najčešće nije dobro niti lako rješenje.</s><s>Umjesto toga, pišu se funkcije koje se rekurzivno pozivaju dok jedna od instanci funkcije ne primi traženi čvor kao argument.</s><s>Tada se izvrši željena radnja (vraćanje rezultata ili stvaranje novog čvora) i rekurzivni lanac se odmotava i završava.</s><s>Slabost rekurzivnog rješenja leži u situacijama kada je stablo veliko, te dolazi do prenatrpavanja funkcijskog steka procesa što može dovesti do usporenosti ili naglog prekidanja cijelog programa.</s>

<s>Dok se binarno stablo u programiranju ostvaruje relativno jednostavno, korišćenjem tačno dva pokazivača, neograničen broj grana po čvoru se implementira na nešto složeniji način.</s><s>Potrebno je u svakom čvoru čuvati neku strukturu podataka koja podržava neograničen broj pokazivača, što se najčešće čini koristeći liste ili obične nizove koji se proširuju po potrebi.</s>

<s>Upotreba 
Binarno stablo se najčešće koristi za smještaj podataka koji moraju biti u uređenom rasporedu, tj. sortirani, kako bi im se moglo brzo pristupati metodom binarne pretrage.</s><s>Međutim, za smještaj bilo kakvih podataka čiji čvorovi mogu imati više od jednog djeteta potrebno je višestruko stablo.</s><s>Na primjer, jezik XML po samoj svojoj definiciji zahtijeva drvoliku strukturu podataka sa neograničenim brojem grana po jednom čvoru.</s><s>Takođe, datotečni sistem kao drvolika struktura zahtijeva neograničen broj grana po jednom direktorijumu.</s><s>U pojedinim implentacijama video igara, lavirinti se takođe implementiraju kao višestruka stabla, pri čemu je svako polje u lavirintu predstavljeno jednim čvorom u stablu, a polja na koja se može preći iz datog polja su predstavljena kao grane odgovarajućeg čvora.</s><s>Obično rješavanje problema izlaza iz lavirinta se, međutim, najčešće ostvaruje upotrebom reda.</s>

<s>Vidi još 
 Binarno stablo
 Stablo u teoriji grafova
 Struktura podataka
 Lista</s>

<s>Spoljašnje veze 
 Opis pojma u rječniku algoritama i struktura podataka</s>

<s>Strukture podataka</s>

