Binärbaum grafisch darstellen

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo
und zwar habe ich mich bis jetzt nur mit einigen Java-anfänger sachen beschäftigt, daraufhin habe ich folgende Klassen programmiert um einen Binärbaum zu erhalten:

Nun suche ich eine möglichkeit die es mir ermöglicht ihn als applet(oder irgendwie anders grafisch) darzustellen, hat jemand einen rat für mich??????????

und eine andere Frage die ich mir stelle ist es wie ich aus diesem Baum einen Binärbaum für Objekte mache, denn im Moment ist er ja nur für int zu gebrauchen? hat da jemand eine idee?



Code:
import java.io.*;

public class Binärbaum 
{
protected String Knoten;
protected int index = 0;
protected int w;
protected int Wert;
Binärbaum vater, links, rechts;


/************************Konstruktor für den Binärbaum, der einen Eingegebenen Wert erwartet***********************/
Binärbaum(int w)
{ 
Wert = w;
vater = null;
links = null;
rechts = null;
index++;
hinzufuegen(w);

} 


/* 
public String toString() 
{
String s = (NamedesKnotens+" :"+Knoten);
return s; 
}
*/ 
/************************Eingabe der hinzuzufügenden einzelnen Werte*******************************/
public int eingabe()
{ 

System.out.print("Eingabe des Wertes: ");
try
{
BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
Knoten = buffer.readLine();
w = Integer.parseInt(Knoten);
hinzufuegen(w); //Startet den Vorgang hinzufügen mit dem Eingegebenen Wert
} 
catch (IOException ioe)
{
System.out.print("Fehler: " + ioe);
System.exit(1);
}
return w;

} 
/********************************Hinzufuegen des eingegebenen Wertes zum Binärbaum*******************************/ 
public void hinzufuegen(int w)
{ 

if (w != Wert)
{
if (w < Wert) 
{
if (links == null) //Ist der linke Sohn frei?
{
links = new Binärbaum(w);
links.vater = this;
index++;
System.out.println(w + " links von :" + Wert + " eingehangen"); //Ausgabe wo der Wert angehängt wird
}// Ende if (links == null)
else links.hinzufuegen(w); //nicht frei, dann starte funktion hinzufuegen am nächsten Knoten neu

}// Ende if (w < Wert)
else
{
if (rechts == null) // Ist der rechte Sohn frei?
{
rechts = new Binärbaum(w);
rechts.vater = this;
index++;
System.out.println(w + " rechts von :" + Wert + " eingehangen"); //Ausgabe wo der Wert angehängt wird
}// Ende if (rechts == null)
else rechts.hinzufuegen(w); //nicht frei, dann starte funktion hinzufuegen am nächsten Knoten neu
}//Ende Else (w < Wert)
}// Ende (w != Wert)


}
/*******************************Suchfunktion für einen angegebenen Wert ******************************/ 
public void search(int Gesucht)
{
if (Gesucht == Wert){
System.out.println("Der von ihnen gesuchte Wert("+Gesucht+") ist vorhanden");
}
else
{
if (links != null && Gesucht < Wert)
{
links.search(Gesucht);
}
else
{
if (rechts != null && Gesucht > Wert)
{
rechts.search(Gesucht);
}
else
{
System.out.println("Der von ihnen gesuchte Wert("+Gesucht+") ist nicht vorhanden");
}
}
}
} 
/ **********************************************Ausg
abe des gesamten Baums**************************/ 
public void ausgabe()
{
if(links != null )
{
System.out.println(links.Wert+" ist ein linker Wert von: "+links.vater.Wert);
links.ausgabe();
}

if(rechts != null)
{
System.out.println(rechts.Wert+" ist ein rechter Wert von: "+rechts.vater.Wert);
rechts.ausgabe(); 
}

}
/*************************************Löschen eines eingegebenen Wertes********************************************
/ 
public void löschen(int w)
{
{
if (w == this.Wert)
{
if ( this.links == null && this.rechts == null)
{
if ( this.vater.links == this)
{
this.vater.links = null;
System.out.println(w + " Gelöscht!");
}
if ( this.vater.rechts == this)
{
this.vater.rechts = null;
System.out.println(w + " Gelöscht!");
}
}
else
{
if (this.links != null && this.rechts == null)
{
this.links.vater = this.vater;
if ( this.vater.links == this)
{
this.vater.links = this.links;
System.out.println(w + " Gelöscht!");

}
if ( this.vater.rechts == this)
{
this.vater.rechts = this.links;
System.out.println(w + " Gelöscht!");
}
}
else
{
if (this.rechts != null && this.links == null)
{
this.rechts.vater = this.vater;
if ( this.vater.links == this)
{
this.vater.links = this.rechts;
System.out.println(w + " Gelöscht!");

}
if ( this.vater.rechts == this)
{
this.vater.rechts = this.rechts;
System.out.println(w + " Gelöscht!");
}
}
else
{
if (this.rechts.links == null)
{
this.links.vater = this.rechts;
this.rechts.vater = this.vater;
if ( this.vater.links == this)
{
this.vater.links = this.rechts;
System.out.println(w + " Gelöscht!");

}
if ( this.vater.rechts == this)
{
this.vater.rechts = this.rechts;
System.out.println(w + " Gelöscht!");
}

}
else
{
this.Wert = this.rechts.getlastleftwert();
}

}
}


}
}
else
{
if (w < this.Wert)
{
if (this.links != null)
{
this.links.löschen(w);
}
else
{
System.out.println(w + " ist nicht vorhanden");
}
}
if (w > this.Wert)
{
if (this.rechts != null)
{
this.rechts.löschen(w);
}
else
{
System.out.println(w + " ist nicht vorhanden");
}
}
}

return;

}
} 
private int getlastleftwert()
{


int Hilf;
if(this.links != null)
{
return this.links.getlastleftwert();
}
else
{
this.vater.links = null;
return this.Wert;
}


}
}

Generiert wird er durch folgendes:


public class Binärausführen {

public static void main(String[] args) {

Binärbaum aloha = new Binärbaum(12);
aloha.eingabe();
aloha.eingabe();
aloha.eingabe();
aloha.eingabe();
aloha.eingabe();
aloha.eingabe();
aloha.eingabe();

bitte code-tags nutzen, mfg mariopetr
 

gustav

Aktives Mitglied
Schau mal bei Google nach OpenJGraph oder VGJ in Verbindung mit Java. Bei Beiden kann man sich Graphen visualisieren lassen und die Bibliotheken nehmen einem dabei noch eine Menge von Skalierungsarbeiten ab. VGJ hat hierbei das komfortablere Benutzerinterface, allerdings wird noch das Java 1.1 AWT Message Konzept verwendet was wiederum zu Warnungen des Compilers führt.
Zur Darstellung mußt Du allerdings immer noch gesondertet Routinen schreiben, also z.B. eine Tiefensuche die dann alle Knoten in die entsprechenden Datenstrukturen einpackt. Falls Du Interesse hast, kann ich mal nachschauen, ob ich noch irgendwo Sourcen habe. Dann fällt die Einarbeitung hoffentlich leichter.....

2.Frage :
Deine Klassenvariable
Code:
protected int Binarbaum.Wert
brauchst Du einfach nur nach Object umbennnen. Danach noch alle Routinen, in denen Du mit diesem Wert handierst. Oder warte bis Java 1.5, dann sollen ja die Templates kommen.... :)
 

Amberstar

Mitglied
Also ich habe jetzt folgende änderungen vorgenommen um den Baum abstarct zu machen:

Code:
import java.io.*;

public abstract class Binärbaum 
{
	


	protected Object Knoten;
	protected int index = 0;
	protected Object w;
	protected Object Wert;
	Binärbaum vater, links, rechts;
	
	
/************************Konstruktor für den Binärbaum, der einen Eingegebenen Wert erwartet***********************/
	Binärbaum(Object w)
	{	
				Wert = w;
				vater = null;
				links = null;
				rechts = null;
				index++;
				hinzufuegen(w);
		
	}		
			
	
/*	
public String toString()				
		{
			String s = (NamedesKnotens+" :"+Knoten);
			return s;	
		}
*/	
/************************Eingabe der hinzuzufügenden einzelnen Werte*******************************/
public Object eingabe()
{	

			System.out.print("Eingabe des Wertes: ");
		try
		{
			BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
			Knoten = buffer.readLine();
			w = Knoten;
			hinzufuegen(w);   //Startet den Vorgang hinzufügen mit dem Eingegebenen Wert
		}	
		catch (IOException ioe)
		{
			System.out.print("Fehler: " + ioe);
			System.exit(1);
		}
		return w;
		
}	
/********************************Hinzufuegen des eingegebenen Wertes zum Binärbaum*******************************/	
public void hinzufuegen(Object w)
	{	
		
		if (gleich(Wert,w))
			{
				if (w == kleiner(w,Wert))
				{
					if (links == null)   //Ist der linke Sohn frei?
					{
						links = new Binärbaum(w);
						links.vater = this;
						index++;
						System.out.println(w + " links von :" + Wert + " eingehangen");  //Ausgabe wo der Wert angehängt wird
					}// Ende if (links == null)
					else links.hinzufuegen(w); //nicht frei, dann starte funktion hinzufuegen am nächsten Knoten neu
				
				}// Ende if (w < Wert)
				else
				{
					if (rechts == null)  // Ist der rechte Sohn frei?
					{
						rechts = new Binärbaum(w);
						rechts.vater = this;
						index++;
						System.out.println(w + " rechts von :" + Wert + " eingehangen"); //Ausgabe wo der Wert angehängt wird
					}// Ende if (rechts == null)
					else rechts.hinzufuegen(w);  //nicht frei, dann starte funktion hinzufuegen am nächsten Knoten neu
				}//Ende Else (w < Wert)
			}// Ende (w != Wert)
			
		
	}
/*******************************Suchfunktion für einen angegebenen Wert ******************************/	
public void search(Object Gesucht)
	{
		if (Gesucht == Wert){
			System.out.println("Der von ihnen gesuchte Wert("+Gesucht+") ist vorhanden");
		}
		else
		{
			if (links != null && ( Gesucht == kleiner(Gesucht,Wert)))
			{
				links.search(Gesucht);
			}
			else
			{
				if (rechts != null && (Gesucht == grösser(Gesucht,Wert)))
				{
					rechts.search(Gesucht);
				}
				else
				{
					System.out.println("Der von ihnen gesuchte Wert("+Gesucht+") ist nicht vorhanden");
				}
			}
		}
	}	
/**********************************************Ausgabe des gesamten Baums**************************/	
public  void ausgabe()
	{
		if(links != null )
		{
			System.out.println(links.Wert+" ist ein linker Wert von: "+links.vater.Wert);
			links.ausgabe();
		}
		
		if(rechts != null)
		{
			System.out.println(rechts.Wert+" ist ein rechter Wert von: "+rechts.vater.Wert);
			rechts.ausgabe();	
		}
			
	}
/*************************************Löschen eines eingegebenen Wertes********************************************/	
public void löschen(Object w)
	{
		{
		if (w == this.Wert)
		{
			if ( this.links == null && this.rechts == null)
			{
				if ( this.vater.links == this)
				{
					this.vater.links = null;
					System.out.println(w + " Gelöscht!");
				}
				if ( this.vater.rechts == this)
				{
					this.vater.rechts = null;
					System.out.println(w + " Gelöscht!");
				}
			}
			else
			{
				if (this.links != null && this.rechts == null)
				{
					this.links.vater = this.vater;
					if ( this.vater.links == this)
					{
						this.vater.links = this.links;
						System.out.println(w + " Gelöscht!");
						
					}
					if ( this.vater.rechts == this)
					{
						this.vater.rechts = this.links;
						System.out.println(w + " Gelöscht!");
					}
				}
				else
				{
					if (this.rechts != null && this.links == null)
					{
						this.rechts.vater = this.vater;
						if ( this.vater.links == this)
						{
							this.vater.links = this.rechts;
							System.out.println(w + " Gelöscht!");
		
						}
						if ( this.vater.rechts == this)
						{
							this.vater.rechts = this.rechts;
							System.out.println(w + " Gelöscht!");
						}
					}
					else
					{
						if (this.rechts.links == null)
						{
							this.links.vater = this.rechts;
							this.rechts.vater = this.vater;
							if ( this.vater.links == this)
							{
								this.vater.links = this.rechts;
								System.out.println(w + " Gelöscht!");

							}
							if ( this.vater.rechts == this)
							{
								this.vater.rechts = this.rechts;
								System.out.println(w + " Gelöscht!");
							}
							
						}
						else
						{
							this.Wert = this.rechts.getlastleftwert();
						}
						
					}
				}
				
				
			}
		}
		else
		{
			if (w == kleiner(w,this.Wert))
			{
				if (this.links != null)
				{
					this.links.löschen(w);
				}
				else
				{
					System.out.println(w + " ist nicht vorhanden");
				}
			}
			if (w == grösser(w,this.Wert))
			{
				if (this.rechts != null)
				{
					this.rechts.löschen(w);
				}
				else
				{
					System.out.println(w + " ist nicht vorhanden");
				}
			}
		}
		
	return;
		
	}
	}	
private Object getlastleftwert()
	{

	
		Object Hilf;
		if(this.links != null)
		{
			return this.links.getlastleftwert();
		}
		else
		{
			this.vater.links = null;
			return this.Wert;
		}
		
	
	}

public abstract boolean gleich(Object Wert1, Object Wert2);
	
public abstract Object grösser(Object Wert1, Object Wert2);
			
public abstract Object kleiner(Object Wert1, Object Wert2);
			
}
Nur bei folgenden Zeilen habe ich jetzt noch Probleme es umzustellen:

Code:
if (links == null)   //Ist der linke Sohn frei?
					{
						links = new Binärbaum(w);
						links.vater = this;

Code:
rechts = new Binärbaum(w);					rechts.vater = this;
in diesen Codezeilen hat er ein Problem mit new Binärbaum!!!
Hierbei zeigt er mir immer noch einen compiler fehler an, wer weiss rat????
 

Amberstar

Mitglied
Habe das Problem jetzt geknackt. Habe ihn nun abstract generiert und mit int´s getestet.
Aber das Problem ihn grafisch darzustellen habe ich immer noch, also würde ich mich über die Sourcen sehr freuen Gustav. Auch für andere Tips wäre ich sehr dankbar.

MfG
Amberstar
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Y Wie greift man auf die Knoten in einem Binärbaum zu? Java Basics - Anfänger-Themen 5
T Binärbaum-Suche Implementation Java Basics - Anfänger-Themen 6
A Binärbaum rekursiv durchsuchen und Referenz zurückgeben Java Basics - Anfänger-Themen 4
D Werte aus einem BinärBaum in einem Array speichern Java Basics - Anfänger-Themen 1
D Binärbaum Blätter finden und Ausgeben Java Basics - Anfänger-Themen 22
O BinärBaum einfügen Java Basics - Anfänger-Themen 13
E Erste Schritte Testklasse Binärbaum Java Basics - Anfänger-Themen 10
void19 Methoden Binärbaum Inorder Traversierung in Array speichern Java Basics - Anfänger-Themen 1
A Größten Eintrag aus Binärbaum löschen Java Basics - Anfänger-Themen 4
L Ganzen BinärBaum ausgeben? Java Basics - Anfänger-Themen 3
L Binärbaum (Stammbaum) Java Basics - Anfänger-Themen 8
S Binärbaum in PreOrder in ArrayList speichern Java Basics - Anfänger-Themen 0
J Methoden Binärbaum, Traversierung in Array speichern Java Basics - Anfänger-Themen 18
K BinärBaum Java Basics - Anfänger-Themen 4
J Max. Anzahl von Knoten im Binärbaum Java Basics - Anfänger-Themen 3
M Werte der Knoten in Binärbaum addieren (iterativ) Java Basics - Anfänger-Themen 6
C Binärbaum mit grafischer Ausgabe Java Basics - Anfänger-Themen 0
J Binärbaum formatiert ausgeben. Java Basics - Anfänger-Themen 7
P Listen sortieren mit Binärbaum gibt keine Ausgabe ab 10000 Integern Java Basics - Anfänger-Themen 14
E Binärbaum - von rekursiv zu iterativ Java Basics - Anfänger-Themen 10
W Größtes Element im unsortierten Binärbaum Java Basics - Anfänger-Themen 7
N Generischer Binärbaum - löschen Java Basics - Anfänger-Themen 1
M Binärbaum mit parent-Zeigern Java Basics - Anfänger-Themen 1
B Methoden BinärBaum als String Knoten löschen Java Basics - Anfänger-Themen 5
S Binärbaum kopieren Java Basics - Anfänger-Themen 6
B Binärbaum mit java implementieren! Java Basics - Anfänger-Themen 5
D Binärbaum Suche Java Basics - Anfänger-Themen 5
D Binärbaum probleme Java Basics - Anfänger-Themen 4
P Binärbaum - Primärschlüssel Java Basics - Anfänger-Themen 3
X Fehler Binärbaum Java Basics - Anfänger-Themen 6
PaulG Fragen zu Binärbaum Java Basics - Anfänger-Themen 21
N Binärbaum/Implementierung Java Basics - Anfänger-Themen 9
P Binärbaum Ordnungsproblem Java Basics - Anfänger-Themen 8
P Generischer Binärbaum (compareTo Frage) Java Basics - Anfänger-Themen 4
P einen binärbaum implementieren Java Basics - Anfänger-Themen 4
M Binärbaum - Problem bei Knoten anhängen / löschen Java Basics - Anfänger-Themen 5
B Binärbaum höhe herausfinden Java Basics - Anfänger-Themen 12
L Rot Scharz Baum von Binärbaum erben Java Basics - Anfänger-Themen 9
S Klassen Aufgabe: Binärbaum überprüfen Java Basics - Anfänger-Themen 16
S Binärbaum Java Basics - Anfänger-Themen 9
S Variable Parameterliste in Binärbaum Java Basics - Anfänger-Themen 2
N BinärBaum Hilfestellung Java Basics - Anfänger-Themen 8
S Binärbaum prüfen, ob sortiert oder unsortiert Java Basics - Anfänger-Themen 6
W Binärbaum zahlen addieren Java Basics - Anfänger-Themen 7
S Binärbaum - Klasse Knoten - Methode Suchen Java Basics - Anfänger-Themen 5
S Binärbaum Java Basics - Anfänger-Themen 7
I Binärbaum Java Basics - Anfänger-Themen 5
S Bitte um Hilfe beim unsortierten Binärbaum!! Java Basics - Anfänger-Themen 6
J Binärbaum getSize Java Basics - Anfänger-Themen 4
P Fragen zum Binärbaum Java Basics - Anfänger-Themen 3
S Binärbaum implementieren Java Basics - Anfänger-Themen 6
K Tiefe im Binärbaum Java Basics - Anfänger-Themen 2
G generischer binärbaum Java Basics - Anfänger-Themen 9
G Binärbaum und Wrapperklassen Java Basics - Anfänger-Themen 6
F Binärbaum codieren. Codeproblem! Java Basics - Anfänger-Themen 4
D rekursion im binärbaum Java Basics - Anfänger-Themen 11
0 Binärbaum als verkettete Liste Java Basics - Anfänger-Themen 3
T Binärbaum - noch ein "klitzekleiner Fehler" Java Basics - Anfänger-Themen 4
B Binärbaum auf Vollständigkeit prüfen Java Basics - Anfänger-Themen 15
G Frage zur einfügen in einem Binärbaum Java Basics - Anfänger-Themen 21
H Wav-Datei grafisch darstellen Java Basics - Anfänger-Themen 2
N Datei einlesen und grafisch anzeigen Java Basics - Anfänger-Themen 31
A Methoden Gedanken Anstöße zur Realisierung zweier Ideen (Grafisch Sekunden zählen und Frameaufteilung) Java Basics - Anfänger-Themen 18
Dit_ Anzahl der Bestellungen grafisch abbilden | Statistisk Java Basics - Anfänger-Themen 6
C Sortieralgorithmus grafisch darstellen Java Basics - Anfänger-Themen 3
H Fehler-Stream grafisch umsetzen Java Basics - Anfänger-Themen 4
Spin Von der Tastatur einlesen grafisch Java Basics - Anfänger-Themen 2
A mathematische Funktionen grafisch darstellen Java Basics - Anfänger-Themen 8
M Datenpaare einlesen und grafisch ausgeben Java Basics - Anfänger-Themen 9
M Sortieralgorythmen bzw. Suchalgorythmen grafisch darstellen Java Basics - Anfänger-Themen 3
Chucky Rekursion grafisch darstellen anhand eines Applets Java Basics - Anfänger-Themen 14
W Liste mit Listen in JTable darstellen Java Basics - Anfänger-Themen 1
X Wie kann man ein Regex erstellen, die 8-Bit-Binär-Zahlen darstellen. Java Basics - Anfänger-Themen 1
M Parse-Tree eines statements darstellen Java Basics - Anfänger-Themen 0
H Binominalkoeffizient tail-rekursiv in java darstellen Java Basics - Anfänger-Themen 0
S CSV Datei auslesen und anders darstellen Java Basics - Anfänger-Themen 2
F Hierarchi im code darstellen Java Basics - Anfänger-Themen 11
CptK Best Practice Merge-Sort als Baum darstellen Java Basics - Anfänger-Themen 3
E Kreis soll eine Raupe darstellen Java Basics - Anfänger-Themen 37
Orkanson Long Binär darstellen Java Basics - Anfänger-Themen 1
J Eingelesene Datei im Histrogramm darstellen Java Basics - Anfänger-Themen 3
pkm Best Practice BufferedImage in JPane darstellen - aber wie? Java Basics - Anfänger-Themen 22
D Klassen Wert aus JTextfield in JLabel (andere Klasse) darstellen. Java Basics - Anfänger-Themen 60
kilopack15 DoWhile-Schleife als While-Schleife darstellen Java Basics - Anfänger-Themen 9
X Minimax-Algorithmus über alle Kanten möglich? - Kanten darstellen Java Basics - Anfänger-Themen 1
E Input/Output Switch ausgabe anpassen bzw. anders darstellen Java Basics - Anfänger-Themen 13
L Mit java ein wort mehrfach versetzt darstellen Java Basics - Anfänger-Themen 14
3 Gitternetz richtig darstellen Java Basics - Anfänger-Themen 3
Messoras Sortieralgorithmus graphisch darstellen Java Basics - Anfänger-Themen 6
M Konkatenation in Sequenzdiagramm darstellen Java Basics - Anfänger-Themen 0
I Anzahl der Rechenschritte darstellen lassen Java Basics - Anfänger-Themen 11
Z Vector in jTextField/jLabel darstellen Java Basics - Anfänger-Themen 4
N Erste Schritte MySQL Tabelle in JList darstellen Java Basics - Anfänger-Themen 1
F Wurzelzeichen darstellen, Wie? Java Basics - Anfänger-Themen 7
V Intervall als Array darstellen Java Basics - Anfänger-Themen 10
A OOP Buchstaben mit ASCII Werten darstellen Java Basics - Anfänger-Themen 1
B Einfache jsp Seite darstellen Java Basics - Anfänger-Themen 9
P Erste Schritte Buffered Image splitten und darstellen Java Basics - Anfänger-Themen 2
U Exponent ausgeben bzw. darstellen Java Basics - Anfänger-Themen 15
H Wie kann ich in Java unbekannte Variablen in Gleichungen darstellen? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben