gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Stabla, dodat zadatak sa vezbi
[spa2-materijali.git] / Stabla / konkretnoStablo / _zadatak-stabla1.txt
diff --git a/Stabla/konkretnoStablo/_zadatak-stabla1.txt b/Stabla/konkretnoStablo/_zadatak-stabla1.txt
new file mode 100644 (file)
index 0000000..d1354e2
--- /dev/null
@@ -0,0 +1,149 @@
+************************************************************\r
+         Zadatak - binarna stabla\r
+************************************************************\r
+\r
+Data je klasa BinarnoStablo sa glavnim programom koji\r
+ucitava jedno stablo i poziva neke od operacija nad njim.\r
+U istom fajlu je i klasa `StabloO` koja predstavlja binarno\r
+stablo osoba. Klasa `Osoba` je takodje data implmentirana.\r
+\r
+U okviru klase `StabloO` implementirati operacije navedene u\r
+nastavku i ilustrovati njihov rad pozivanjem iz glavnog\r
+programa u `BinarnoStablo`. Svaki metod je potrebno\r
+implementirati kao javan metod klase `StabloO`, a cesto je\r
+potrebno napravitit i pomocni zasticen staticki metod istog\r
+imena. Pogledati primer implementacije metoda\r
+brojElemenata() i brojNivoa().\r
+\r
+Sve promene treba raditi u fajlu BinarnoStablo.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, a dato je tacno kako treba da se ucita.\r
+\r
+\r
+Metodi\r
+======\r
+\r
+public boolean jePrazno()\r
+-------------------------\r
+\r
+U klasi StabloO, implementirati metod koji\r
+vraca true ako je stablo prazno, false ako nije.\r
+\r
+public boolean postojiElement(Osoba element)\r
+----------------------------------------\r
+\r
+U klasi StabloO, 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 StabloO, implementirati metod koji\r
+stampa sve elemente preorder nacinom obilaska.\r
+\r
+public void stampajInOrder()\r
+----------------------------\r
+\r
+U klasi StabloO, implementirati metod koji\r
+stampa sve elemente inorder nacinom obilaska.\r
+\r
+public void stampajPostOrder()\r
+----------------------------\r
+\r
+U klasi StabloO, implementirati metod koji\r
+stampa sve elemente postorder nacinom obilaska.\r
+\r
+public void stampajListove()\r
+----------------------------\r
+\r
+U klasi StabloO, 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 pronadji(Osoba element)\r
+------------------------------------\r
+\r
+U klasi StabloO, 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(Osoba element)\r
+--------------------------------------\r
+\r
+U klasi StabloO, implementirati metod koji\r
+stampa sve elemnte koji su direktni ili indirektni\r
+potomci datog.\r
+\r
+\r
+public boolean ubaci(Osoba roditelj, Osoba potomak, boolean levo)\r
+---------------------------------------------------------\r
+\r
+U klasi StabloO, 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 Osoba roditeljOd(Osoba potomak)\r
+--------------------------------------\r
+\r
+U klasi StabloO, implementirati metod koji\r
+pronalazi i vraca roditelja datog elementa. Ako\r
+je prosledjeni element koren celog stabla\r
+vratiti null.\r
+\r
+\r
+public Osoba min(Comparator<Osoba> komparator)\r
+public Osoba max(Comparator<Osoba> komparator)\r
+--------------------------------------\r
+\r
+U klasi StabloO, implementirati metod koji\r
+pronalazi i vraca najmanji, odnosno najveci, element\r
+stabla.\r
+\r
+Prilikom pretrage koristiti prosledjeni komparator.\r
+\r
+Za testiranje je dat `KomparatorPoPlati`, napraviti\r
+druge po potrebi.\r
+\r
+\r
+public StabloO kopija()\r
+-------------------------\r
+\r
+U klasi StabloO, 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 StabloO obrnuto()\r
+--------------------------\r
+\r
+U klasi StabloO, 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