gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control systemdiff --git a/Stabla/Primeri za test/StabloIOClassic.java b/Stabla/Primeri za test/StabloIOClassic.java
--- /dev/null
@@ -0,0 +1,85 @@
+import java.util.NoSuchElementException;\r
+\r
+import org.svetovid.io.SvetovidReader;\r
+import org.svetovid.io.SvetovidWriter;\r
+\r
+/**\r
+ * Format:\r
+ *\r
+ * br\r
+ * id leviId desniId vrednost (x br)\r
+ */\r
+public class StabloIOClassic implements StabloIO {\r
+\r
+ @Override\r
+ public Stablo readStablo(SvetovidReader in) {\r
+ int br = in.readInt();\r
+ Stablo stablo = null;\r
+ for (int i = 0; i < br; i++) {\r
+ int id = in.readInt();\r
+ int leviId = in.readInt();\r
+ int desniId = in.readInt();\r
+ String vrednost = in.readLine();\r
+ Stablo levi = leviId == -1 ? null : new Stablo(leviId);\r
+ Stablo desni =desniId == -1 ? null : new Stablo(desniId);\r
+ Stablo element = new Stablo(id, vrednost, levi, desni);\r
+ stablo = insert(stablo, element);\r
+ }\r
+ return stablo;\r
+ }\r
+\r
+ private static Stablo insert(Stablo stablo, Stablo element) {\r
+ if (stablo == null) {\r
+ return element;\r
+ }\r
+ Stablo found = find(stablo, element.id);\r
+ if (found == null) {\r
+ throw new NoSuchElementException("id: " + element.id);\r
+ }\r
+ found.vrednost = element.vrednost;\r
+ found.levi = element.levi;\r
+ found.desni = element.desni;\r
+ return stablo;\r
+ }\r
+\r
+ private static Stablo find(Stablo stablo, int id) {\r
+ if (stablo == null) {\r
+ return null;\r
+ }\r
+ if (stablo.id == id) {\r
+ return stablo;\r
+ }\r
+ Stablo rezultat = find(stablo.levi, id);\r
+ if (rezultat != null) {\r
+ return rezultat;\r
+ }\r
+ return find(stablo.desni, id);\r
+ }\r
+\r
+ @Override\r
+ public void printStablo(SvetovidWriter out, Stablo stablo) {\r
+ int br = count(stablo);\r
+ out.println(br);\r
+ iterate(out, stablo);\r
+ }\r
+\r
+ private static int count(Stablo stablo) {\r
+ if (stablo == null) {\r
+ return 0;\r
+ }\r
+ return 1 + count(stablo.levi) + count(stablo.desni);\r
+ }\r
+\r
+ private static void iterate(SvetovidWriter out, Stablo stablo) {\r
+ if (stablo == null) {\r
+ return;\r
+ }\r
+ int id = stablo.id;\r
+ int leviId = stablo.levi == null ? -1 : stablo.levi.id;\r
+ int desniId = stablo.desni == null ? -1 : stablo.desni.id;\r
+ String vrednost = stablo.vrednost;\r
+ out.println(id, leviId, desniId, vrednost);\r
+ iterate(out, stablo.levi);\r
+ iterate(out, stablo.desni);\r
+ }\r
+}\r