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
diff --git a/Stabla/konkretnoStablo/BinarnoStablo.java b/Stabla/konkretnoStablo/BinarnoStablo.java
new file mode 100644 (file)
index 0000000..230bc74
--- /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
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner