gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Primer implementacije binarnih stabala sa opstim tipom podataka
[spa2-materijali.git] / Stabla / StabloOpstegTipa / _zadatak-stabla.txt
diff --git a/Stabla/StabloOpstegTipa/_zadatak-stabla.txt b/Stabla/StabloOpstegTipa/_zadatak-stabla.txt
new file mode 100644 (file)
index 0000000..b271547
--- /dev/null
@@ -0,0 +1,142 @@
+************************************************************\r
+         Zadatak - binarna stabla\r
+************************************************************\r
+\r
+Data je klasa BinarnoStablo koja implementira opste binarno\r
+stablo. Takodje je dat i glavni program koji ucitava jedno\r
+stablo i poziva neke od operacija nad njim.\r
+\r
+Implementirati operacije navedene u nastavku i ilustrovati\r
+njihov rad pozivanjem iz glavnog programa. Svaki metod je\r
+potrebno implementirati kao javan metod klase BinarnoStablo,\r
+uz pomocni zasticen staticki metod istog imena. Pogledati\r
+primer implementacije metoda brojElemenata() i brojNivoa().\r
+\r
+Sve promene treba raditi u fajlu StabloProgram.java u kome\r
+su pomenute klase. Ostali fajlovi su klasa Osoba koja\r
+predstavlja element koji ubacujemo u konkretnom programu,\r
+kao i pomocne klase koje sluze za ucitavanje stabla iz fajla\r
+u urednom formatu. Ucitavanje stabla na ovaj nacin nije\r
+neophodno uciti.\r
+\r
+\r
+Metodi\r
+======\r
+\r
+public boolean jePrazno()\r
+-------------------------\r
+\r
+U klasi BinarnoStablo, implementirati metod koji\r
+vraca true ako je stablo prazno, false ako nije.\r
+\r
+public boolean postojiElement(T element)\r
+----------------------------------------\r
+\r
+U klasi BinarnoStablo, implementirati metod koji\r
+vraca true ako se prosledjeni elemnt nalazi u\r
+stablu, false inace.\r
+\r
+Prilikom pretrage stabla koristiti metod equals().\r
+\r
+\r
+public void stampajPreorder()\r
+----------------------------\r
+\r
+U klasi BinarnoStablo, implementirati metod koji\r
+stampa sve elemente preorder nacinom obilaska.\r
+\r
+public void stampajInOrder()\r
+----------------------------\r
+\r
+U klasi BinarnoStablo, implementirati metod koji\r
+stampa sve elemente inorder nacinom obilaska.\r
+\r
+public void stampajPostOrder()\r
+----------------------------\r
+\r
+U klasi BinarnoStablo, implementirati metod koji\r
+stampa sve elemente postorder nacinom obilaska.\r
+\r
+public void stampajListove()\r
+----------------------------\r
+\r
+U klasi BinarnoStablo, implementirati metod koji\r
+stampa sve elemente koji se nalaze u listovima.\r
+\r
+List je cvor koji nema ni levog ni desnog potomka.\r
+\r
+private Cvor<T> pronadji(T element)\r
+------------------------------------\r
+\r
+U klasi BinarnoStablo, implementirati metod koji\r
+pronalazi dati element i vraca stablo sa korenom\r
+u tom elementu.\r
+\r
+Ako element ne postoji u stablu, vratiti null.\r
+\r
+Ovaj metod koristiti kao pomocni za sledeci.\r
+\r
+\r
+public void stampajSveIspod(T element)\r
+--------------------------------------\r
+\r
+U klasi BinarnoStablo, implementirati metod koji\r
+stampa sve elemnte koji su direktni ili indirektni\r
+potomci datog.\r
+\r
+\r
+public boolean ubaci(T roditelj, T potomak, boolean levo)\r
+---------------------------------------------------------\r
+\r
+U klasi BinarnoStablo, implementirati metod koji\r
+pronalazi element dat u prvom argumentu (roditelj)\r
+i kao njegovog poromka ubacuje element dat u drugom\r
+argumentu (potomak). Ako je treci argument (levo)\r
+true tada se element ubacuje kao levi potomak, a\r
+ako je false, kao desni.\r
+\r
+Ako se na zeljenom mestu vec nalazi nesto, vratiti false\r
+i ne ubacivati element, inace vratiti true pri uspesnom\r
+ubacivanju.\r
+\r
+\r
+public T roditeljOd(T potomak)\r
+--------------------------------------\r
+\r
+U klasi BinarnoStablo, implementirati metod koji\r
+pronalazi i vraca roditelja datog elementa. Ako\r
+je prosledjeni element koren celog stabla\r
+vratiti null.\r
+\r
+public T min(Comparator<T> komparator)\r
+public T max(Comparator<T> komparator)\r
+--------------------------------------\r
+\r
+U klasi BinarnoStablo, implementirati metod koji\r
+pronalazi i vraca najmanji, odnosno najveci, element\r
+stabla.\r
+\r
+Prilikom pretrage koristiti prosledjeni komparator.\r
+\r
+\r
+public BinarnoStablo<T> kopija()\r
+-------------------------\r
+\r
+U klasi BinarnoStablo, implementirati metod koji\r
+vraca kopiju stabla.\r
+\r
+Potrebno je iskopirati i sve cvorove kako izmene\r
+jednog stabla ne bi uticale na drugo.\r
+\r
+\r
+public BinarnoStablo<T> obrnuto()\r
+--------------------------\r
+\r
+U klasi BinarnoStablo, implementirati metod koji\r
+vraca novo stablo nastalo obrtanjem originalng.\r
+Stablo se obrce tako sto se zamene mesta levih\r
+i desnih podstabala koja se pre toga takogje\r
+obrnu.\r
+\r
+Posle poziva metoda originalno stablo mora ostati\r
+nepromenjeno.\r
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner