gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control systemdiff --git a/Stabla/konkretnoStablo/BinarnoStablo.java b/Stabla/konkretnoStablo/BinarnoStablo.java
--- /dev/null
@@ -0,0 +1,72 @@
+// Konkretno stablo koje sadrzi Osobe\r
+class StabloO {\r
+ \r
+ // jedan cvor u stablu sa jednom osobom i pokazivacima\r
+ // na "decu"\r
+ private static class Cvor {\r
+ Osoba osoba;\r
+ Cvor levo;\r
+ Cvor desno;\r
+ }\r
+ \r
+ // koren celog stabla\r
+ private Cvor koren;\r
+ \r
+ // Vraca ukupan broj osoba u stablu\r
+ public int brojOsoba() {\r
+ return brojOsoba(koren);\r
+ }\r
+\r
+ protected static int brojOsoba(Cvor cvor) {\r
+ if (cvor == null) {\r
+ return 0;\r
+ }\r
+ int broj = 1;\r
+ broj = broj + brojOsoba(cvor.levo);\r
+ broj = broj + brojOsoba(cvor.desno);\r
+ return broj;\r
+ }\r
+ \r
+ public int brojNivoa() {\r
+ // Spremimo argumente i pozovemo rekurzivni metod\r
+ return brojNivoa(koren);\r
+ }\r
+\r
+ // Metod koji zapravo resava dati problem\r
+ protected static int brojNivoa(Cvor cvor) {\r
+ if (cvor == null) {\r
+ return 0;\r
+ }\r
+ int brojNivoaLevog = brojNivoa(cvor.levo);\r
+ int brojNivoaDesnog = brojNivoa(cvor.desno);\r
+ return Math.max(brojNivoaLevog, brojNivoaDesnog) + 1;\r
+ }\r
+\r
+}\r
+\r
+// Glavna klasa\r
+public class BinarnoStablo {\r
+\r
+ // Glavni program\r
+ public static void main(String[] args) {\r
+\r
+ // Napravimo pomocni objekat za ucitavanje i ispisivanje\r
+ TreeIO<StabloO> io = new TreeIO<>(StabloO.class);\r
+\r
+ // Procitamo stablo iz fajla\r
+ StabloO stablo = io.read(Svetovid.in("Osobe.txt"));\r
+\r
+ // Ispisemo ucitano stablo\r
+ io.print(Svetovid.out, stablo);\r
+\r
+ // ilustracije poziva metoda\r
+ \r
+ int brojElemenata = stablo.brojOsoba();\r
+ Svetovid.out.println("Broj elemenata:", brojElemenata);\r
+ \r
+ int brojNivoa = stablo.brojNivoa();\r
+ Svetovid.out.println("Broj nivoa:", brojNivoa);\r
+\r
+ // dodati ovde pozive implementiranih metoda\r
+ }\r
+}\r