Hallo an alle!!
Ich habe ein Problem mit dem Suchbaum....
Ich sollte ein Materialverwaltungsprogramm schreiben, der mit einem Multiclientserver und mit einem eingebautem binärem Suchbaum..
Die GUIs für verwaltung und client server habe ich schon fertig..es funktioniert soweit..
Der Suchbaum funktioniert soweit auch allerdings mit Integer Objekten. Ich möchte da aber Objekte von Material (mit ID, name, bezeichnung) einspeichern wobei der Suchbaum an sich soll mit dem Material ID aufgebaut werden...
wie mache ich das?????
- welche datentypen kann man in einem suchbaum hinterlegen?
- wenn material mit id, name und bezeichnung in den suchbaum eingepflegt wird, wie kann ich dem suchbaum sagen dass er nach id den suchbaum aufbauen soll?
kann mir jemand helfen?? mit einem Coding dazu?? ich komme da nicht weiter... :roll: ich wäre sehr dankbar für Hilfe..
Hier mein Coding:
SUCHBAUM:
und eine Testklasse:
und Material:
Ich habe ein Problem mit dem Suchbaum....
Ich sollte ein Materialverwaltungsprogramm schreiben, der mit einem Multiclientserver und mit einem eingebautem binärem Suchbaum..
Die GUIs für verwaltung und client server habe ich schon fertig..es funktioniert soweit..
Der Suchbaum funktioniert soweit auch allerdings mit Integer Objekten. Ich möchte da aber Objekte von Material (mit ID, name, bezeichnung) einspeichern wobei der Suchbaum an sich soll mit dem Material ID aufgebaut werden...
wie mache ich das?????
- welche datentypen kann man in einem suchbaum hinterlegen?
- wenn material mit id, name und bezeichnung in den suchbaum eingepflegt wird, wie kann ich dem suchbaum sagen dass er nach id den suchbaum aufbauen soll?
kann mir jemand helfen?? mit einem Coding dazu?? ich komme da nicht weiter... :roll: ich wäre sehr dankbar für Hilfe..
Hier mein Coding:
SUCHBAUM:
Code:
import java.io.PrintWriter;
abstract public class BinaryTree {
protected BinaryTreeNode root;
abstract public int compare (Object obj1, Object obj2);
// < 0, wenn obj1 kleiner obj2
// == 0 bei gleichen Werten
// > 0, obj1 > obj2
public Object find(Object searchValue) {
if (root == null)
return null;
else
return find(root, searchValue);
}
protected Object find(BinaryTreeNode node, Object searchValue) {
int compareResult;
Object result = null;
if ( (compareResult = compare(searchValue, node.value)) == 0)
return node.value;
else if ( compareResult < 0 ) {
if (node.left != null)
result = find(node.left, searchValue);
}
else { // compareResult > 0
if (node.right != null)
result = find(node.right, searchValue);
}
return result;
}
public boolean insert(Object newValue) {
if (newValue == null)
throw new NullPointerException();
if (root == null) {
root = new BinaryTreeNode(newValue);
return true;
}
else
return insert(root, newValue);
}
private boolean insert(BinaryTreeNode node, Object newValue) {
int compareResult;
if ( (compareResult = compare(newValue, node.value)) < 0) {
if (node.left != null)
return insert(node.left, newValue);
else {
node.left = new BinaryTreeNode(newValue);
return true;
}
}
else if (compareResult > 0) {
if (node.right != null)
return insert(node.right, newValue);
else {
node.right = new BinaryTreeNode(newValue);
return true;
}
}
return false; // gefunden, nichts einzufügen
}
public void printAll (PrintWriter out) {
if (root != null)
print(root, out);
}
private void print(BinaryTreeNode node, PrintWriter out) {
// inorder traversal
if (node.left != null)
print(node.left, out);
out.println(node.value);
if (node.right != null)
print(node.right, out);
}
}
class BinaryTreeNode {
BinaryTreeNode left;
BinaryTreeNode right;
Object value;
BinaryTreeNode(Object newValue) {
value = newValue;
}
Code:
class BinaryIntegerTree extends BinaryTree {
public int compare(Object obj1, Object obj2) {
// < 0, wenn obj1 kleiner obj2
// == 0 bei gleichen Werten
// > 0, obj1 > obj2
return ((Integer) obj1).intValue() - ((Integer) obj2).intValue();
}
}
und eine Testklasse:
Code:
import java.io.*;
/
public class Prog1 {
public static void main(String args[]) throws Exception{
BufferedReader in;
PrintWriter out;
out = new PrintWriter(new OutputStreamWriter(System.out, "Cp437"), true);
in = new BufferedReader( new InputStreamReader(System.in, "Cp437"));
try {
out.println("binTree0.");
out.println("---------");
out.println();
// Initialisierung des Baums als leerer Baum
BinaryTree tree = new BinaryIntegerTree();
// Einfügen von ein paar Knoten
tree.insert(new Integer(5));
tree.insert(new Integer(3));
tree.insert(new Integer(17));
tree.insert(new Integer(15));
// Traversieren in Inorder-Reihenfolge gibt sortiert aus.
tree.printAll(out);
out.println();
out.println("Der Wert " + new Integer(16) +
" wurde gefunden: " + (tree.find(new Integer(16)) != null) );
out.println("Der Wert " + new Integer(17) +
" wurde gefunden: " + (tree.find(new Integer(17)) != null) );
} catch (Throwable e) { // Error or Exception
out.println();
e.printStackTrace(out);
}
finally {
out.println();
out.println("To exit, press Enter one or more times.");
in = new BufferedReader( new InputStreamReader(System.in, "Cp437"));
in.readLine();
}
}
}
und Material:
Code:
import java.io.Serializable;
public class Material implements Serializable {
private static final long serialVersionUID = 1L;
static int id;
static String materialName;
static String materialBez;
public Material (int id, String materialName, String materialBez) {
this.id = id;
this.materialName = materialName;
this.materialBez = materialBez;
}
}