gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control systemdiff --git a/Stabla/StabloOpstegTipa/StabloProgram.java b/Stabla/StabloOpstegTipa/StabloProgram.java
+++ /dev/null
@@ -1,167 +0,0 @@
-import java.util.NoSuchElementException;\r
-//@interface DatoNaVezbama {}\r
-\r
-// Tip podataka koji sadrzi binarno stablo\r
-class BinarnoStablo<T> {\r
-\r
- // Tip podataka koji opisuje jedan cvor stabla\r
- private static class Cvor<T> {\r
- \r
- T element;\r
- Cvor<T> levo;\r
- Cvor<T> desno;\r
-\r
- Cvor(T element, Cvor<T> levo, Cvor<T> desno) {\r
- this.element = element;\r
- this.levo = levo;\r
- this.desno = desno;\r
- }\r
- }\r
-\r
- // Cvor koji je koren stabla\r
- // Ako je stablo prazno, koren je null\r
- protected Cvor<T> koren;\r
-\r
- // Kreiramo prazno stablo\r
- public BinarnoStablo() {\r
- koren = null;\r
- }\r
-\r
- // Kreiramo stablo sa datim elementom u korenu\r
- // bez levog i desnog podstabla\r
- public BinarnoStablo(T element) {\r
- koren = new Cvor<>(element, null, null);\r
- }\r
-\r
- // Kreiramo novo stablo sa datim elementom u korenu\r
- // i datim levim i desnim podstablom\r
- public BinarnoStablo(T element, BinarnoStablo<T> levo, BinarnoStablo<T> desno) {\r
- koren = new Cvor<T>(element, levo.koren, desno.koren);\r
- }\r
-\r
- // Zasticeni konstruktor za kreiranje novog stabla\r
- // sa korenom u datom cvoru ovog stabla\r
- protected BinarnoStablo(Cvor<T> koren) {\r
- this.koren = koren;\r
- }\r
-\r
- public T getElement() {\r
- if (koren == null) { // Stablo je prazno\r
- throw new NoSuchElementException();\r
- }\r
- return koren.element;\r
- }\r
-\r
- public void setElement(T element) {\r
- if (koren == null) { // Stablo je prazno\r
- throw new NoSuchElementException();\r
- }\r
- koren.element = element;\r
- }\r
-\r
- public BinarnoStablo<T> getLevoPodstablo() {\r
- if (koren == null) { // Stablo je prazno\r
- throw new NoSuchElementException();\r
- }\r
- if (koren.levo == null) { // Nema levog podstabla\r
- return null;\r
- }\r
- return new BinarnoStablo<T>(koren.levo);\r
- }\r
-\r
- public void setLevoPodstablo(BinarnoStablo<T> levo) {\r
- if (koren == null) { // Stablo je prazno\r
- throw new NoSuchElementException();\r
- }\r
- if (levo == null) {\r
- koren.levo = null;\r
- } else {\r
- koren.levo = levo.koren;\r
- }\r
- }\r
-\r
- public BinarnoStablo<T> getDesnoPodstablo() {\r
- if (koren == null) { // Stablo je prazno\r
- throw new NoSuchElementException();\r
- }\r
- if (koren.desno == null) {\r
- return null;\r
- }\r
- return new BinarnoStablo<T>(koren.desno);\r
- }\r
-\r
- public void setDesnoPodstablo(BinarnoStablo<T> desno) {\r
- if (koren == null) { // Stablo je prazno\r
- throw new NoSuchElementException();\r
- }\r
- if (desno == null) {\r
- koren.desno = null;\r
- } else {\r
- koren.desno = desno.koren;\r
- }\r
- }\r
-\r
-// @DatoNaVezbama\r
- public int brojElemenata() {\r
- // Spremimo argumente i pozovemo rekurzivni metod\r
- return brojElemenata(koren);\r
- }\r
-\r
- // @DatoNaVezbama\r
- // Metod koji zapravo resava dati problem\r
- protected static <T> int brojElemenata(Cvor<T> cvor) {\r
- if (cvor == null) {\r
- return 0;\r
- }\r
- int broj = 1;\r
- broj = broj + brojElemenata(cvor.levo);\r
- broj = broj + brojElemenata(cvor.desno);\r
- return broj;\r
- }\r
-\r
- // @DatoNaVezbama\r
- public int brojNivoa() {\r
- // Spremimo argumente i pozovemo rekurzivni metod\r
- return brojNivoa(koren);\r
- }\r
-\r
- @DatoNaVezbama\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
-// Glavna klasa\r
-public class StabloProgram {\r
-\r
- // Glavni program\r
- public static void main(String[] args) {\r
-\r
- // Kreiramo objekat koji koristimo za ucitavanje i ispisivanje stabla\r
- StabloIOPretty<Osoba> io = new StabloIOPretty<>(Konverter.OSOBA);\r
-\r
- // Ucitamo stablo\r
- BinarnoStablo<Osoba> stablo = io.readStablo(Svetovid.in("Osobe.txt"));\r
-\r
- // Ispisemo ucitano stablo na ekran\r
- io.printStablo(Svetovid.out, stablo);\r
- Svetovid.out.println();\r
-\r
- // Ilustrujemo poziv metoda\r
- \r
- int brojElemenata = stablo.brojElemenata();\r
- Svetovid.out.println("Broj elemenata:", brojElemenata);\r
- \r
- int brojNivoa = stablo.brojNivoa();\r
- Svetovid.out.println("Broj nivoa:", brojNivoa);\r
-\r
- // TODO Dodati pozive ostalih metoda\r
-\r
- }\r
-}\r