gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Stabla, dodati primeri algoritama nad stablima
[spa2-materijali.git] / Stabla / Primeri za test / StabloIOIndent.java
diff --git a/Stabla/Primeri za test/StabloIOIndent.java b/Stabla/Primeri za test/StabloIOIndent.java
new file mode 100644 (file)
index 0000000..8e9dc83
--- /dev/null
@@ -0,0 +1,73 @@
+import org.svetovid.SvetovidFormatException;\r
+import org.svetovid.io.SvetovidReader;\r
+import org.svetovid.io.SvetovidWriter;\r
+\r
+/**\r
+ * Format:\r
+ *\r
+ * id vrednost\r
+ * levi\r
+ * desni\r
+ */\r
+public class StabloIOIndent implements StabloIO {\r
+\r
+    protected String nullSymbol;\r
+    protected String indent;\r
+\r
+    public StabloIOIndent() {\r
+        this("-", "    ");\r
+    }\r
+\r
+    public StabloIOIndent(String nullSymbol, String indent) {\r
+        this.nullSymbol = nullSymbol;\r
+        this.indent = indent;\r
+    }\r
+\r
+    public String getNullSymbol() {\r
+        return nullSymbol;\r
+    }\r
+\r
+    public void setNullSymbol(String nullSymbol) {\r
+        this.nullSymbol = nullSymbol;\r
+    }\r
+\r
+    public String getIndent() {\r
+        return indent;\r
+    }\r
+\r
+    public void setIndent(String indent) {\r
+        this.indent = indent;\r
+    }\r
+\r
+    @Override\r
+    public Stablo readStablo(SvetovidReader in) {\r
+        try {\r
+            int id = in.readInt();\r
+            String vrednost = in.readLine();\r
+            Stablo levi = readStablo(in);\r
+            Stablo desni = readStablo(in);\r
+            Stablo stablo = new Stablo(id, vrednost, levi, desni);\r
+            return stablo;\r
+        } catch (SvetovidFormatException e) {\r
+            return null;\r
+        }\r
+    }\r
+\r
+    @Override\r
+    public void printStablo(SvetovidWriter out, Stablo stablo) {\r
+        write(out, stablo, nullSymbol, indent, "");\r
+    }\r
+\r
+    protected void write(SvetovidWriter out, Stablo stablo, String nullSymbol, String indent, String prefix) {\r
+        if (stablo == null) {\r
+            out.println(prefix + nullSymbol);\r
+            return;\r
+        }\r
+        int id = stablo.id;\r
+        String vrednost = stablo.vrednost;\r
+        out.print(prefix);\r
+        out.println(id, vrednost);\r
+        write(out, stablo.levi, nullSymbol, indent, prefix + indent);\r
+        write(out, stablo.desni, nullSymbol, indent, prefix + indent);\r
+    }\r
+}\r
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner