gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under
the git version control system
1 import java
.util
.NoSuchElementException
;
3 import org
.svetovid
.io
.SvetovidReader
;
4 import org
.svetovid
.io
.SvetovidWriter
;
7 * Ova klasa sluzi za ucitavanje i snimanje stabala. Nije potrebno znati je,
8 * i bice data, prilikom izrade prakticnih zadataka.
10 * Ocekivani format fajla je sledeci:
13 * id leviId desniId vrednost (x br)
15 * Primer fajla je classic.txt
17 public class StabloIOClassic
implements StabloIO
{
20 public Stablo
readStablo(SvetovidReader in
) {
21 int br
= in
.readInt();
23 for (int i
= 0; i
< br
; i
++) {
24 int id
= in
.readInt();
25 int leviId
= in
.readInt();
26 int desniId
= in
.readInt();
27 String vrednost
= in
.readLine();
28 Stablo levi
= leviId
== -1 ?
null : new Stablo(leviId
);
29 Stablo desni
=desniId
== -1 ?
null : new Stablo(desniId
);
30 Stablo element
= new Stablo(id
, vrednost
, levi
, desni
);
31 stablo
= insert(stablo
, element
);
36 private static Stablo
insert(Stablo stablo
, Stablo element
) {
40 Stablo found
= find(stablo
, element
.getId());
42 throw new NoSuchElementException("id: " + element
.getId());
44 found
.setVrednost(element
.getVrednost());
45 found
.setLevi(element
.getLevi());
46 found
.setDesni(element
.getDesni());
50 private static Stablo
find(Stablo stablo
, int id
) {
54 if (stablo
.getId() == id
) {
57 Stablo rezultat
= find(stablo
.getLevi(), id
);
58 if (rezultat
!= null) {
61 return find(stablo
.getDesni(), id
);
65 public void printStablo(SvetovidWriter out
, Stablo stablo
) {
66 int br
= count(stablo
);
71 private static int count(Stablo stablo
) {
75 return 1 + count(stablo
.getLevi()) + count(stablo
.getDesni());
78 private static void iterate(SvetovidWriter out
, Stablo stablo
) {
82 int id
= stablo
.getId();
83 int leviId
= stablo
.getLevi() == null ?
-1 : stablo
.getLevi().getId();
84 int desniId
= stablo
.getDesni() == null ?
-1 : stablo
.getDesni().getId();
85 String vrednost
= stablo
.getVrednost();
86 out
.println(id
, leviId
, desniId
, vrednost
);
87 iterate(out
, stablo
.getLevi());
88 iterate(out
, stablo
.getDesni());
Svarog.pmf.uns.ac.rs/gitweb
maintanance
Doni Pracner