binärer Suchbaum mit client server., objekte speichern.

Status
Nicht offen für weitere Antworten.

ola

Mitglied
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:
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;
		
		
	}

}
 

hdi

Top Contributor
versteh dein Problem nicht? Wieso nicht:

Code:
tree.insert ( myMaterial.getID());
 

ola

Mitglied
Vielen Dank dir...
es scheint zu laufen...:)

wie kann ich jetzt meine Objekte in einer Tabelle ausgeben?? sprich den baum nach ID durchsuchen und dann demensprechend einfügen bzw löschen o suchen u ausgeben in einer JTable..

ich habe eine Methode in der ich Objekte in einer ArrayList abspeichere und dann anhand von einer JTable Tabelle graphisch ausgebe...

Code:
public void anzeigen(ArrayList<MaterialstammObj> list) {
		
		String[] head={"ID", "Name", "Bezeichnung"};
		
        Iterator iter = list.iterator();
        String[][] rowData = new String[list.size()][3];
        
        int count = 0;
        
        while(iter.hasNext()){
            
        	Material mat = (Material)iter.next();
            
            rowData[count][0] = String.valueOf(matst.getID());
            rowData[count][1]= matst.getName();
            rowData[count][2]= matst.getBezeichnung();
           
            
            count ++;
        }
        
        hf.tbAnzeige.setModel(new javax.swing.table.DefaultTableModel(rowData,head));
        hf.repaint();
	}

wenn ich jetzt analog eine methode schreiben die suchen soll, dann sucht sie doch meine Arraylist durch...ich möchte aber dass sie den Suchbaum durchsucht und dann das Ergebniss in der Tabelle ausgibt...

Kann mir jemad helfen?? Ich komme nicht drauf...wäre dankbar...

lg
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Binärer Suchbaum Nachfolger Allgemeine Java-Themen 3
M Binärer Suchbaum Allgemeine Java-Themen 11
A Binärer Suchbaum Knoten Zählen Allgemeine Java-Themen 4
C Binärer Suchbaum Allgemeine Java-Themen 6
S Binärer Suchbaum Stackoverflow Problem Allgemeine Java-Themen 4
T blattorientierter binärer Suchbaum Allgemeine Java-Themen 5
C Binärer Suchbaum Allgemeine Java-Themen 3
OnDemand ApacheCommon FTP Client zuckt nicht Allgemeine Java-Themen 3
E Server Client Audio Allgemeine Java-Themen 6
E Server Client Audio Allgemeine Java-Themen 0
TonioTec Api für Datenaustausch zwischen Client und Server Allgemeine Java-Themen 0
C Java RMI Client - Server Allgemeine Java-Themen 0
S Simples Client Server Setup in Java Allgemeine Java-Themen 4
M JVM: Client Software Logging und Profiling aktivieren Allgemeine Java-Themen 1
OnDemand REST Client programmierens Allgemeine Java-Themen 4
J Soap Client mit mehreren URLs in Servlets Allgemeine Java-Themen 0
T Google Distance Matrix API Hello World/ Client Secret Allgemeine Java-Themen 3
C Hang Man Server Client Allgemeine Java-Themen 3
C Hang man mit Server/Client Allgemeine Java-Themen 2
M OOP IRC Client Allgemeine Java-Themen 3
B Web-Anwendung funktioniert mit Java 1.8, aber nicht mit Java 1.7 (auf Client) Allgemeine Java-Themen 5
D JAVA Basiertes Spiel aus dem Internet in eigenem Client laden Allgemeine Java-Themen 3
P CXF 3.0.1 WebService- Client Allgemeine Java-Themen 0
M Checksummenprüfung bei Client Server kommunikation Allgemeine Java-Themen 3
B Java Mail Client als Outlook ausgeben Allgemeine Java-Themen 2
Z Java E-Mail Client mit End-to-End-Verschlüsselung Allgemeine Java-Themen 4
E Socket Client-Server-Programmierung Allgemeine Java-Themen 44
T Java Streaming-Server & Streaming-Client Allgemeine Java-Themen 4
0 Lösungsweg Client Server Kommunikation Fehlermeldung ausgeben Allgemeine Java-Themen 12
D Client / Server Allgemeine Java-Themen 23
M HTTP Client Zertifikat sicher übertragen? Wie? Allgemeine Java-Themen 2
eskimo328 Swing Client Anwendung für MAC OS (Update Routine) Allgemeine Java-Themen 6
Z Threads Thread für einen Client Allgemeine Java-Themen 9
J Zugriff auf Poker-Client Fenster Allgemeine Java-Themen 14
G REST Client / URL Parser Allgemeine Java-Themen 2
S Java Kommandozeilen - Client Allgemeine Java-Themen 3
T JPA Entity im Client-Server-Umfeld Allgemeine Java-Themen 19
M Client für einen Webservice erstellen (ONVIF) Allgemeine Java-Themen 3
B mehrere services in einem client Allgemeine Java-Themen 10
D Versuch Server - Client anwendung Allgemeine Java-Themen 9
T Welcher Server? JSP und Client-Anwendung Allgemeine Java-Themen 4
MQue Server- Thread Client Allgemeine Java-Themen 2
D design client server Allgemeine Java-Themen 10
F Java Server VM/ Client VM Allgemeine Java-Themen 7
J JSP Client LInk einbauen Allgemeine Java-Themen 15
J Client Allgemein Allgemeine Java-Themen 10
V Ausführung Client- oder Serverseitig? Allgemeine Java-Themen 13
A Client/Server-Anwendung Allgemeine Java-Themen 3
T Proxys: Idee für den Callback vom Server zum Client? Allgemeine Java-Themen 3
S SMTP-Limit bei Newsletter-Client Allgemeine Java-Themen 5
thE_29 Simpler FTP Client Allgemeine Java-Themen 3
G Performance Problem bei der Übertragung Server zum Client Allgemeine Java-Themen 3
J java vnc client verbessern: KeyEvent.VK_ALT keine Wirkung? Allgemeine Java-Themen 12
E NT-Anmeldung in Java Client-Applikation nutzen. JAAS ? Allgemeine Java-Themen 5
T einen SVN- oder QVCS-Client selber programmieren Allgemeine Java-Themen 2
M Tool zum autom. Client-Update Allgemeine Java-Themen 2
M kennt jemand nen gute email client in java mit imap? Allgemeine Java-Themen 3
H Datenbank an ein Java Client Server Programm anschliessen Allgemeine Java-Themen 3
A Was ist bei einem Servlet beim Client notwendig? Allgemeine Java-Themen 22
D ldap zugriff mit Java Client Allgemeine Java-Themen 2
A Daten-Synchronisation Client <-> Datenquelle (DB) ? Allgemeine Java-Themen 6
G Servlet - "Client immer am neuesten Stand" Allgemeine Java-Themen 2
G EMail Client Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben