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
1 ************************************************************
2 Zadatak - binarna stabla
3 ************************************************************
5 Data je klasa BinarnoStablo sa glavnim programom koji
6 ucitava jedno stablo i poziva neke od operacija nad njim.
7 U istom fajlu je i klasa `StabloO` koja predstavlja binarno
8 stablo osoba. Klasa `Osoba` je takodje data implmentirana.
10 U okviru klase `StabloO` implementirati operacije navedene u
11 nastavku i ilustrovati njihov rad pozivanjem iz glavnog
12 programa u `BinarnoStablo`. Svaki metod je potrebno
13 implementirati kao javan metod klase `StabloO`, a cesto je
14 potrebno napravitit i pomocni zasticen staticki metod istog
15 imena. Pogledati primer implementacije metoda
16 brojElemenata() i brojNivoa().
18 Sve promene treba raditi u fajlu BinarnoStablo.java u kome
19 su pomenute klase. Ostali fajlovi su klasa `Osoba` koja
20 predstavlja element koji ubacujemo u konkretnom programu,
21 kao i pomocne klase koje sluze za ucitavanje stabla iz fajla
22 u urednom formatu. Ucitavanje stabla na ovaj nacin nije
23 neophodno uciti, a dato je tacno kako treba da se ucita.
26 Metodi
27 ======
29 public boolean jePrazno()
30 -------------------------
32 U klasi StabloO, implementirati metod koji
33 vraca true ako je stablo prazno, false ako nije.
35 public boolean postojiElement(Osoba element)
36 ----------------------------------------
38 U klasi StabloO, implementirati metod koji
39 vraca true ako se prosledjeni elemnt nalazi u
40 stablu, false inace.
42 Prilikom pretrage stabla koristiti metod equals().
45 public void stampajPreorder()
46 ----------------------------
48 U klasi StabloO, implementirati metod koji
49 stampa sve elemente preorder nacinom obilaska.
51 public void stampajInOrder()
52 ----------------------------
54 U klasi StabloO, implementirati metod koji
55 stampa sve elemente inorder nacinom obilaska.
57 public void stampajPostOrder()
58 ----------------------------
60 U klasi StabloO, implementirati metod koji
61 stampa sve elemente postorder nacinom obilaska.
63 public void stampajListove()
64 ----------------------------
66 U klasi StabloO, implementirati metod koji
67 stampa sve elemente koji se nalaze u listovima.
69 List je cvor koji nema ni levog ni desnog potomka.
71 private Cvor pronadji(Osoba element)
72 ------------------------------------
74 U klasi StabloO, implementirati metod koji
75 pronalazi dati element i vraca stablo sa korenom
76 u tom elementu.
78 Ako element ne postoji u stablu, vratiti null.
80 Ovaj metod koristiti kao pomocni za sledeci.
83 public void stampajSveIspod(Osoba element)
84 --------------------------------------
86 U klasi StabloO, implementirati metod koji
87 stampa sve elemnte koji su direktni ili indirektni
88 potomci datog.
91 public boolean ubaci(Osoba roditelj, Osoba potomak, boolean levo)
92 ---------------------------------------------------------
94 U klasi StabloO, implementirati metod koji
95 pronalazi element dat u prvom argumentu (roditelj)
96 i kao njegovog poromka ubacuje element dat u drugom
97 argumentu (potomak). Ako je treci argument (levo)
98 true tada se element ubacuje kao levi potomak, a
99 ako je false, kao desni.
101 Ako se na zeljenom mestu vec nalazi nesto, vratiti false
102 i ne ubacivati element, inace vratiti true pri uspesnom
103 ubacivanju.
106 public Osoba roditeljOd(Osoba potomak)
107 --------------------------------------
109 U klasi StabloO, implementirati metod koji
110 pronalazi i vraca roditelja datog elementa. Ako
111 je prosledjeni element koren celog stabla
112 vratiti null.
115 public Osoba min(Comparator<Osoba> komparator)
116 public Osoba max(Comparator<Osoba> komparator)
117 --------------------------------------
119 U klasi StabloO, implementirati metod koji
120 pronalazi i vraca najmanji, odnosno najveci, element
121 stabla.
123 Prilikom pretrage koristiti prosledjeni komparator.
125 Za testiranje je dat `KomparatorPoPlati`, napraviti
126 druge po potrebi.
129 public StabloO kopija()
130 -------------------------
132 U klasi StabloO, implementirati metod koji
133 vraca kopiju stabla.
135 Potrebno je iskopirati i sve cvorove kako izmene
136 jednog stabla ne bi uticale na drugo.
139 public StabloO obrnuto()
140 --------------------------
142 U klasi StabloO, implementirati metod koji
143 vraca novo stablo nastalo obrtanjem originalng.
144 Stablo se obrce tako sto se zamene mesta levih
145 i desnih podstabala koja se pre toga takogje
146 obrnu.
148 Posle poziva metoda originalno stablo mora ostati
149 nepromenjeno.
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner