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 / BinarnoStablo.java
1 // Konkretno stablo koje sadrzi Osobe
2 class StabloO {
4 // jedan cvor u stablu sa jednom osobom i pokazivacima
5 // na "decu"
6 private static class Cvor {
7 Osoba osoba;
8 Cvor levo;
9 Cvor desno;
10 }
12 // koren celog stabla
13 private Cvor koren;
15 // Vraca ukupan broj osoba u stablu
16 public int brojOsoba() {
17 return brojOsoba(koren);
18 }
20 protected static int brojOsoba(Cvor cvor) {
21 if (cvor == null) {
22 return 0;
23 }
24 int broj = 1;
25 broj = broj + brojOsoba(cvor.levo);
26 broj = broj + brojOsoba(cvor.desno);
27 return broj;
28 }
30 public int brojNivoa() {
31 // Spremimo argumente i pozovemo rekurzivni metod
32 return brojNivoa(koren);
33 }
35 // Metod koji zapravo resava dati problem
36 protected static int brojNivoa(Cvor cvor) {
37 if (cvor == null) {
38 return 0;
39 }
40 int brojNivoaLevog = brojNivoa(cvor.levo);
41 int brojNivoaDesnog = brojNivoa(cvor.desno);
42 return Math.max(brojNivoaLevog, brojNivoaDesnog) + 1;
43 }
45 }
47 // Glavna klasa
48 public class BinarnoStablo {
50 // Glavni program
51 public static void main(String[] args) {
53 // Napravimo pomocni objekat za ucitavanje i ispisivanje
54 TreeIO<StabloO> io = new TreeIO<>(StabloO.class);
56 // Procitamo stablo iz fajla
57 StabloO stablo = io.read(Svetovid.in("Osobe.txt"));
59 // Ispisemo ucitano stablo
60 io.print(Svetovid.out, stablo);
62 // ilustracije poziva metoda
64 int brojElemenata = stablo.brojOsoba();
65 Svetovid.out.println("Broj elemenata:", brojElemenata);
67 int brojNivoa = stablo.brojNivoa();
68 Svetovid.out.println("Broj nivoa:", brojNivoa);
70 // dodati ovde pozive implementiranih metoda
71 }
72 }
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner