Binärbaum höhe herausfinden

babuschka

Top Contributor
Hi zusammen,
habe folgendes Problem:

Die Methode soll die Höhe des Binärbaums zurück geben.
Habe einen Lösungsansatz.Allerdings glaube ich, dass es wesentlicher einfacher und schicker geht.

Habt ihr eine Idee?

Java:
public class TreeN {
	
	private TreeN links, rechts;
	
	TreeN(TreeN links, TreeN rechts){
		this.links = left;
		this.rechts = right;
	}
	
	public int getHoehe(TreeN t){
                TreeN hilfe = t;
		int hoehe;
		int a = 0;
		int b = 0;
		
		if(t==null){
			return -1;
		}else{
			while (hilfe.left != null){
				a++;
			}
			while (hilfe.right != null){
				b++;
				
			}
			
			hoehe = Math.max(a,b);
		}
		return hoehe;


}
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
bevor es ans 'besser' geht, wie wärs damit, deinen Code überhaupt als korrekt zu zu bestimmen, überhaupt einmal zu testen?!
kann mir nicht vorstellen dass du den hast laufen lassen,

Java:
while (hilfe.left != null){
                a++;
            }
was passiert wenn hilfe.left tatsächlich mal != null ist? a wird erhöht und dann kommt die Schleifenbedingung erneut dran,
was passiert jetzt? und danach? und danach? und danach? und danach?...
 
R

Rosa

Gast
DAS ist ja mein Problem...Es läuft nicht...Hab mich vielleicht falsch ausgedrückt.

Ich glaube, Du musst erstmal dafür sorgen das bei jedem Listenelement, was Du in die Liste hängst, Links und Rechts auch NULL ist. Also:
public void insertElement(TreeN elem){
elem.Links=null;
elem.Rechts=null;
// add to tree
// ...
}

aber so, wie ich den Code verstehe, arbeitest Du mit Links,Rechts, left und right. Vielleicht solltest Du dich auf eine Schreibweise einigen, um die richtigen Attribute zu erwischen!!!
Rosa
 
S

SlaterB

Gast
'binärbaum höhe bestimmen' ist ein klassischen Thema was sich gut suchen lässt wenn du auf eigenes Denken verzichten willst,
ansonsten schreibst du quasi nur dass du ein Problem hast,
ok, wenn man einen Algorithmus nicht kennt kann man das kaum richtig beschreiben aber ein bisschen doch wohl noch?
etwa dass du, wenn du einen left-Nachfolger != null siehst, mit diesem irgendwie weiterarbeiten musst? hilfe.left.left?
 

Shulyn

Bekanntes Mitglied
[Java]
// Beispielhaft

while (hilfe.left != null){
a++;
hilfe = hilfe.left;
}
while (hilfe.right != null){
b++;
hilfe = hilfe.right;
}
[/Java]

Du musst nach jedem "prüfen" auch weiter gehen im Baum. Zur Zeit Prüfst du immer wieder die selbe stelle ...
 
T

thorstennn

Gast
Java:
return node == null ? 0 : Math.max( height(left, 1 + i), height(right, 1 + i) );
 

Andi_CH

Top Contributor
Falls du nicht sowieso derselbe bist, schliess die mit dem da zusammen - der hat dieselben Probleme.

Höhe bestimmen und Knoten zählen läuft nach demselben Muster ab - rekursiv geht es am elegantesten.
 
T

thorstennn

Gast
sry:
Java:
return node == null ? -1 : Math.max( height(node.left, 1 + i), height(node.right, 1 + i) );
 
T

thorstennn

Gast
nein, i-1
löscht die anderen am besten oder fügt alle zusammen:
Java:
return node == null ? i-1 : Math.max( height(node.left, 1 + i), height(node.right, 1 + i) );
einfach zu schwierig heute;)
 

Andi_CH

Top Contributor
Wie waers damit? Das ist natürlich Bestandteile eines nodes

Java:
	public int hoehe() {
		int l = 0;
		int r = 0;
		if (leftSon != null)
			l = leftSon.hoehe();
		if (rightSon != null)
			r = rightSon.hoehe();
		return 1 + Math.max(l, r);
	}

Wenn man unbedingt murksen will, geht auch das mit ?: Notation auf einer Zeile, aber wir haben ja hier keinen Thrad wie diesen da :D
 
Zuletzt bearbeitet:
T

thorstennn

Gast
die letzte zeile ist auch gequetscht und jetzt zähle ich schon sieben statt einer zeile und dass auch noch bei auslassung aller optionaler klammern;)
 

Andi_CH

Top Contributor
Newlines sind auch Optional - es ist also nur eine Zeile :)

Ich bleibe dabei, dass die ?: notation wesentlich weniger gut zu verstehen ist als eine schön aufgebautes if und ich glaube nicht, dass es irgendwelche Vorteile hat.

Habs eben kurz getestet - funktioniert sogar richtig :)
 
Ä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
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
G Binärbaum grafisch darstellen Java Basics - Anfänger-Themen 4
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
BeginnerJava "Weihnachtsbäume" anzeigen: Höhe als Parameter Java Basics - Anfänger-Themen 1
E JPanels auf gleicher Höhe (Y-Achse) in einem FlowLayout platzieren Java Basics - Anfänger-Themen 7
H Höhe eines binäurbaums. Java Basics - Anfänger-Themen 7
B Wie kann ich die Buchstaben sortieren nach der Höhe der Zahlen Java Basics - Anfänger-Themen 14
P Shape Zeichnen klappt nicht - einlesen der Breite/Höhe schon Java Basics - Anfänger-Themen 1
I HTML Tabelle nur so lange erzeugen bis Höhe erreicht Java Basics - Anfänger-Themen 9
H Höhe einer Komponente an Textinhalt anpassen Java Basics - Anfänger-Themen 4
K JComboBox hat volle Höhe uber das gesamte JPane, warum? Java Basics - Anfänger-Themen 2
R Höhe eines B-Baums Java Basics - Anfänger-Themen 3
L variable <div> höhe Java Basics - Anfänger-Themen 6
N Rekursive Berechnung der Höhe eines binären Baumes Java Basics - Anfänger-Themen 4
dummy2 Negative Höhe / Breite bei Figuren Java Basics - Anfänger-Themen 2
dummy2 Breite / Höhe Java Basics - Anfänger-Themen 4
M Binärer Suchbaum Höhe Java Basics - Anfänger-Themen 6
L Höhe eines Baumes Java Basics - Anfänger-Themen 3
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
Say Stelle in Code herausfinden, wie geht man vor? Java Basics - Anfänger-Themen 12
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
L Best Practice Annotierte Klassen im Classpath herausfinden Java Basics - Anfänger-Themen 1
L Rekursiv gegebenes Passwort herausfinden. Java Basics - Anfänger-Themen 2
H Arrays: Größten Zahlen Unterschied herausfinden Java Basics - Anfänger-Themen 20
D Grösste Zahl in einer Folge herausfinden. (ULAM) Java Basics - Anfänger-Themen 9
Schmaxel Herausfinden ob ein Bruch kürzbar ist. Java Basics - Anfänger-Themen 6
mr.kottig Großeltern herausfinden Java - Map? Java Basics - Anfänger-Themen 16
P Herausfinden, auf welchem Panel des CardLayouts man gerade ist? Java Basics - Anfänger-Themen 12
L Breadth-First Search statt einem Pfad, alle Pfade herausfinden Java Basics - Anfänger-Themen 4
T Return einer anderen Methode herausfinden Java Basics - Anfänger-Themen 9
F Alle Zeichenkombinationen eines Strings iterativ herausfinden Java Basics - Anfänger-Themen 26
Dilara_K Abstand zwischen den Doppelwerten in einem Array herausfinden Java Basics - Anfänger-Themen 20
K die Source eines Events bei verschiedenen Quellen herausfinden Java Basics - Anfänger-Themen 1
J Die Zahl herausfinden die durch 2 - 30 Teilbar ist... Java Basics - Anfänger-Themen 17
WetWer Herausfinden wer Tic Tac Toe gewonnen hat Java Basics - Anfänger-Themen 4
H Erste Schritte Längstes Wort eines Strings herausfinden Java Basics - Anfänger-Themen 7
Y Rekursiv Palindrom herausfinden Java Basics - Anfänger-Themen 5
Z Wie Position eines Objekts in Liste herausfinden? Java Basics - Anfänger-Themen 15
T Wie kann man den Klassentyp eines Objektes in Java herausfinden? Java Basics - Anfänger-Themen 4
J Erste Schritte Zweithöchster Wert eines Arrays herausfinden - warum klappt mein Code nicht? Java Basics - Anfänger-Themen 3
M Windowsbenutzernamen herausfinden? Java Basics - Anfänger-Themen 6
K Vererbung Zuweisungsfehler (Kompilier- und Laufzeitfehler) herausfinden Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben