AVL Baum

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Code:
public class Baum {

	Knoten wurzel;

	private class Knoten {

		Knoten Links;
		Knoten Rechts;
		Integer zahlenwert;

	}

	public boolean exists(int element) {
		Knoten Ba = wurzel;

		boolean exists = false;
		while (Ba != null) {
			exists = Ba.zahlenwert.equals(element);
			if (element > Ba.zahlenwert) {
				Ba = Ba.Rechts;

			}

			else {
				Ba = Ba.Links;
			}

			if (exists == true) {
				System.out.println("Das Element existiert bereits!");
				return exists;
			}

		}
		return exists;
	}

	public void insert(int element) throws ElementExistsException {
		Knoten Ba = wurzel;
		Knoten Blatt = new Knoten();
		Blatt.zahlenwert = element;
		Knoten tmp = Ba;
		if(wurzel == null){
			wurzel = Blatt;
		}
		if (true == exists(Blatt.zahlenwert)) {
		}
		else{
		while(Ba != null){
			if(Blatt.zahlenwert > Ba.zahlenwert){
				tmp = Ba;
				Ba = Ba.Rechts;
				if(Ba == null){
					tmp.Rechts = Blatt;
				}
			}
			else {
				tmp = Ba;
				Ba = Ba.Links;
				if(Ba== null){
					tmp.Links = Blatt;
					
				
				}
			}
		}

	}
	} // Anzahl Knoten abfrage anhand von einem Zähler.....
	public int NumberofNodes() {
		int k = 10;
		return k;
	}

	public int getHeight() {
		Knoten Ba = wurzel;
		int zaehlerlinks = 0;
		int zaehlerrechts = 0;
	
		while(Ba != null){
			if(Ba.Rechts!=null){
				zaehlerrechts =getHeight(Ba.Rechts);
			}
			else if (Ba.Links != null){
				zaehlerlinks = getHeight(Ba.Links);
				
			}
			else{
				return Math.max(zaehlerlinks, zaehlerrechts)+1;
			}
		}
	return 0;	
	}
	private int getHeight(Knoten wurzel){
		Knoten Ba = wurzel;
		int zaehlerlinks = 0;
		int zaehlerrechts = 0;
	
		while(Ba != null){
			if(Ba.Rechts!=null){
				zaehlerrechts = getHeight(Ba.Rechts);
			}
			else if (Ba.Links != null){
				zaehlerrechts = getHeight(Ba.Links);
				
			}
			else{
				return Math.max(zaehlerlinks, zaehlerrechts)+1;
			}
		}
	return 0;	
	}
//Kleinster Eintrag im Baum
	public int getMinimum() {

	}
//größter Eintrag im Baum
	public int getMaximum() {

	}
// Überprüfen ob AVL Baum und mit hilfe der Hilfsfunktion private boolean isAVLTree(Knoten wurzel)lösen!
	public boolean isAVLTree() {

	}

	private boolean isAVLTree(Knoten wurzel) {

	}

}


Hallo leute!
Ich hab komm bei der aufgabe nicht weiter....einiges habe ich schon geschrieben aber die letzten 4 Einträge,weiß ich nicht wie ich lösen soll und wie ich die anzahl der Knoten des Baums anhand eines Zählers realisieren kann?
Die aufgabenstellung ist kommentiert.
Wäre dankbar für eure hilfe...

lg
 

0x7F800000

Top Contributor
Wie fast immer bei irgendwelchen Aufgaben mit Bäumen. Du überlegst dir, wie du die aufgabe für einen einzelnes Leaf zu lösen ist, und dann überlegst du dir, wie das problem zu lösen ist, wenn du das problem für die Kinder schon gelöst hast. Beide teilaufgaben bergen keine Tücken und sind für jedermann mit ein wenig Abstraktionsvermögen innerhalb von höchstens 10 Minutne machbar. Also mach zumindest mal einen Lösungsvorschlag ("kA wie anfangen" zählt nicht als Lösungsvorschlag)
Sag mal, bist du nicht zufällig noch einer aus einer gewissen "ainf" veranstaltung von einem gewissen Hr. Prof. O. V. ? ???:L Hab mir deren Vorlesungsplan durchgeschaut, sowas wie AVL-Bäume dürfte da grad ganz gut reinpassen :roll: ...
 
B

Bä*m

Gast
Keine Sorge, den muss man bei uns nicht iimplementieren diese Woche. ;)
Wir haben was schöneres gefunden, das noch nicht da war.

Aber stimmt, ist erstaunlich passend.
 

0x7F800000

Top Contributor
@Bä³m: Na seht ihr, jetzt hab ich euretwegen Paranoia^^ :p
@OP: Okay, back 2 topic. Lösungsvoschläge? :)
 
G

Gast

Gast
ainf? und den prof kenne ich auch nicht........bei mir heißt es GDI
also für getMinimum() habe was geschrieben nur ist es falsch.....



Code:
	public int getMinimum() {
		
		Knoten k=wurzel;
		while(k.Links)
			k=k.Links.Knoten;
		return k.zahlenwert;
	
		
	}
 
B

Bä*m

Gast
Wunderbar. Das wollten wir erreichen.

Das Minimum in einem AVL-Baum steht immer ganz links, das Maximum ganz rechts.
 
G

Gast

Gast
das weiß ich schon lange nur wie kann ich genau auf den kleinsten wert zugreifen.....?
 

0x7F800000

Top Contributor
Gast hat gesagt.:
also für getMinimum() habe was geschrieben nur ist es falsch.....
Doch, vom Sinn her ist das anscheinend sogar einigermaßen richtig, nur ist das kein Java :roll: kein korrektes java jedenfalls...

Code:
	public int getMinimum() {	
		Knoten k=wurzel;
		while(k.Links)                    //das hier ist kein C, hier werden zeiger nicht explizit nach 0 bzw false gecastet
                                                       //da muss !=null hin
			k=k.Links.Knoten;     //was soll dieses ".Knoten" bedeuten?
		return k.zahlenwert;
	}
 
G

Gast

Gast
Code:
	public int getMinimum() {
		
		Knoten k=wurzel;
		while(k.Links!=null)
			k=k.Links;
		
		return k.zahlenwert;
	
		
	}
//größter Eintrag
	public int getMaximum() {
		Knoten k=wurzel;
		while(k.Rechts!=null)
			k=k.Rechts;
		return k.zahlenwert;

.knoten sollte bedeuten das er auf die klasse knoten zugreifen soll.......
stimmt das was ich für die beiden geschrieben habe?
 

0x7F800000

Top Contributor
Gast hat gesagt.:
stimmt das was ich für die beiden geschrieben habe?
sinnfreie Fragestellung. Lass es doch einfach laufen und gug dir das Ergebnis an, der compiler braucht dafür 7ms ich brauche dafür >2.8 Sekunden. Menschen können da einfach nicht mithalten. Schließende Klammer vergessen, übrigens... -.- ^^
 
B

Bä*m

Gast
Gast hat gesagt.:
das weiß ich schon lange nur wie kann ich genau auf den kleinsten wert zugreifen.....?
Hättest du das schon im Eingangsposting erwähnt, wäre ich nicht mit diesen Trivialitäten angekommen.

Damit ein Baum AVL-Baum ist, darf sich die Höhe des linken Teilbaums und des rechten Teilbaums jedes Knotens im Baum nur um maximal 1 unterscheiden. Eine Höhenmethode hast du ja schon, die musst du also nur entsprechend oft abfeuern oder ein bisschen modifizieren.
 
G

Gast

Gast
Code:
public class ElementExistsException extends Exception {

	
	public ElementExistsException() {
	}

	public ElementExistsException(String s) {
		super(s);
	}



	public static void main(String[] args) {
		
		try {
			throw new ElementExistsException();
		} catch (ElementExistsException e) {

			System.out.println(e.getMessage());

		}

	}

}

er soll eine exception werfen.....wenn der eingebene wert existiert und den ausgeben....wie gibt er den wert aus? bzw wie greife ich auf die klasse baum-->insert()?
 

0x7F800000

Top Contributor
mal ganz langsam.
wer bist du? immer noch derselbe gast mit demselben AVL-baum?
Und was ist das für eine Exception? "ElementExistsException" klingt für mich schonmal ziemlich sinnfrei...
"Whaa, ich bin ein Baum und hab Elemente, die Welt geht unter..." :?: :bahnhof:
 
G

Gast

Gast
Ich bin der selbe gast....Mit dieser Exception will ich sorgen das kein wert 2 mal eingegeben wird, d.h Sollte ich ein wert 2 mal eingeben,dann soll sich das Exception auslösen und dazu noch denn eingegeben wert ausgeben?
 

0x7F800000

Top Contributor
achso, ja, das kannst du natürlich machen, aber das ist eigentlich absolut nicht die übliche vorgehensweise
(was soll man damit erreichen? dadurch wird der User nur gezwungen, vorher selbst redundante elemente rauszufiltern, das könnte je nach situation ätzend sein)
Normalerweise würde man die "add()" methode mit einem boolean-rückgabewert versehen, der angibt, ob sich an deinem baum was verändert hat. Siehe zB hier: Set#.add(). Exceptions werden da keine geworfen, jedenfalls.

Aber gut, mal angenommen du willst die exception doch aus irgendeinem grund werfen... Was ist dein Problem damit? sieht doch soweit in ordnung aus?
 
G

Gast

Gast
Mein Problem ist das er das eingegene wert ausgibt.....nur wie schreibbe ich das in dem programm bzw exception rein?
 

0x7F800000

Top Contributor
definiere doch die Integer-membervariable in deiner exception, und passe den Konstruktor entsprechend an, was soll man denn da großartig neuerfinden?
 
G

Gast

Gast
Integer-membervariable? wie meinst du das mit definieren? Ich dachte ich greife einfach nur auf die Klasse baum zu und dort soll der letzte eingegebene wert gespeichert werden...(deswegen die frage wie ich daruaf zugreifen kann)...
 

0x7F800000

Top Contributor
Wieso soll denn die exception auf den baum zugreifen, der auch noch für die Exception irgendetwas speichert? Spaghettiproduktion?

Code:
class ZuVielZeigsexception extends Exception{
   private int zeugsDasZuvielIst;
   public ZuVielZeugsException(int wasIstDennZuVielMannooo){
      super("Irgendwas zu viel oder so "+wasIstDennZuVielMannooo);
      zeugsDasZuvielIst=wasIstDennZuVielMannoooo; //kA wozu du das brauchst, und ob überhaupt...
   }
}


//sonstwo
throw new ZuVielZeugsException(123); //123 ist eindeutig zuviel!!!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D spezifische Knoten in einem Baum zählen Java Basics - Anfänger-Themen 9
HelpInneed Baum ausgeben (aber mal anders) Java Basics - Anfänger-Themen 3
G AVL-Baum Java Basics - Anfänger-Themen 1
G Rot-Schwarz-Baum Java Basics - Anfänger-Themen 8
L Baum aus Integer Liste erstellen Java Basics - Anfänger-Themen 0
CptK Interface Baum visualisieren Java Basics - Anfänger-Themen 37
CptK Best Practice Merge-Sort als Baum darstellen Java Basics - Anfänger-Themen 3
E Baum pfadweise durchlaufen Java Basics - Anfänger-Themen 11
O Naives links rechts einfügen in ADT Baum Java Basics - Anfänger-Themen 8
L Traversierungsverfahren Baum: LevelOrder Java Basics - Anfänger-Themen 17
L Rekursion im Baum Java Basics - Anfänger-Themen 9
L Baum Knoten zählen Java Basics - Anfänger-Themen 6
L B+Baum innere Knoten erstellen Java Basics - Anfänger-Themen 3
D B-Baum einfügen und löschen Java Basics - Anfänger-Themen 2
F Aufgabe Rekursion Binärer Baum Java Basics - Anfänger-Themen 15
D Werte AVL-Baum löschen Java Basics - Anfänger-Themen 2
M Binären Baum Kinder setzen Java Basics - Anfänger-Themen 12
U 2-3-4 Baum Top-Down Java Basics - Anfänger-Themen 4
U 2-3-4 Baum Top-Down Java Basics - Anfänger-Themen 0
J Überprüfen, ob eine 2D Matrix ein Baum ist Java Basics - Anfänger-Themen 5
R Baum erzeugen Java Basics - Anfänger-Themen 61
B Baum Traversierung Postorder Java Basics - Anfänger-Themen 6
B OOP Über einen AVL-Baum iterieren (NullPointer) Java Basics - Anfänger-Themen 5
A Voller Baum Java Basics - Anfänger-Themen 7
S n-ärer Baum Java Basics - Anfänger-Themen 6
O Unterschied Baum <-> Automat Java Basics - Anfänger-Themen 2
K Tiefen- und Breitensuche beim Baum durch Stack und Warteschlange Java Basics - Anfänger-Themen 1
C kompletter baum Java Basics - Anfänger-Themen 2
M Collections Iterator und generischer Baum Java Basics - Anfänger-Themen 0
M Baum Code kurze frage ... Java Basics - Anfänger-Themen 6
D Ein Objekt in einem Baum finden und ausgeben. Java Basics - Anfänger-Themen 4
K Rot-Schwarz-Baum min und max-Tiefe Java Basics - Anfänger-Themen 1
A min() Methode Baum Java Basics - Anfänger-Themen 1
J Baum rekursiv durchlaufen Java Basics - Anfänger-Themen 2
J Baum Knoten löschen Java Basics - Anfänger-Themen 10
T Baum mit Turtle zeichnen Java Basics - Anfänger-Themen 2
Screen 2,4 Baum Frage Java Basics - Anfänger-Themen 6
T Rot-schwarz Baum Problem Java Basics - Anfänger-Themen 3
A Rekursion in Baum und ArrayList als Rückgabe Java Basics - Anfänger-Themen 2
P Pythagoras Baum - Berechnung der Punkte Java Basics - Anfänger-Themen 9
C 2-3 Baum Java Basics - Anfänger-Themen 6
H Baum Java Basics - Anfänger-Themen 4
L Rot Scharz Baum von Binärbaum erben Java Basics - Anfänger-Themen 9
B Baum > Baum-Swing Java Basics - Anfänger-Themen 4
L eigenen Baum schreiben Java Basics - Anfänger-Themen 5
Luk10 Anzahl der Knoten in einem Baum ausgeben! Java Basics - Anfänger-Themen 6
T Array in einen Baum zu überführen Java Basics - Anfänger-Themen 3
S Das reinschreiben einer Klasse in den Baum Java Basics - Anfänger-Themen 6
H B-Baum: Knoten Position als Parameter oder als Variable im Objekt? Java Basics - Anfänger-Themen 4
A Baum mit geometricfigur Werte Java Basics - Anfänger-Themen 6
D Datentypen Einfügen im RotSchwarz Baum Java Basics - Anfänger-Themen 2
F FileSystem in Baum darstellen/wurzel festlegen Java Basics - Anfänger-Themen 3
G List als Rückgabewert einer rekursiven Methode (Baum) Java Basics - Anfänger-Themen 3
I Baum graphisch darstellen Java Basics - Anfänger-Themen 2
P Binärer Baum mit Composite-Entwurfsmuster Java Basics - Anfänger-Themen 2
L Baum Swing AVL Java Basics - Anfänger-Themen 4
Binary.Coder 2-3-4 Baum vs. (2,4) Baum Java Basics - Anfänger-Themen 2
ModellbahnerTT Ab-Baum Applet Java Basics - Anfänger-Themen 3
P Baum-Menü in Java Java Basics - Anfänger-Themen 5
H Baum Java Basics - Anfänger-Themen 11
J Baum spiegeln Java Basics - Anfänger-Themen 7
N 2-3 Baum, Einfügen Java Basics - Anfänger-Themen 5
G Rekursion mit Return - Baum durchlaufen Java Basics - Anfänger-Themen 4
G Baum Datenstruktur Java Basics - Anfänger-Themen 2
V Baum mit log n Aufwand für Einfügen und Löschen und. Java Basics - Anfänger-Themen 5
H Tiefensuche im binären Baum Java Basics - Anfänger-Themen 2
P Problem mit Darstellung im Baum Java Basics - Anfänger-Themen 4
G Binärer Baum Java Basics - Anfänger-Themen 3
M Binärer Baum Tiefe Java Basics - Anfänger-Themen 14
G universeller baum Java Basics - Anfänger-Themen 13
G Baum testen Java Basics - Anfänger-Themen 20
B Array To Baum Java Basics - Anfänger-Themen 2
B Baum to Array Java Basics - Anfänger-Themen 17
H Löschen in einem binären Baum führt zu einem StackOverflow Java Basics - Anfänger-Themen 2
L Binären Baum speichern Java Basics - Anfänger-Themen 6
R Pythagoras-Baum Java Basics - Anfänger-Themen 5
W Baum durchlaufen Java Basics - Anfänger-Themen 3
T binärer Baum Java Basics - Anfänger-Themen 3
G eine Knoten aus einem Baum löschen. [SOLVED] Java Basics - Anfänger-Themen 7
P allg. Baum aus Liste Java Basics - Anfänger-Themen 2
J String in binären Baum umwandeln Java Basics - Anfänger-Themen 7
R binärer Baum Java Basics - Anfänger-Themen 2
F Abstrakte Klasse Baum Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben