Binärbaum

Status
Nicht offen für weitere Antworten.

supermonkey

Mitglied
Hallo!
Bin ein Java-Neuling und hab ein paar Fragen.
Ich muss als Aufgabe eine Knotenklasse, welche Nutzdaten und seine beiden Kinder enthält, erstellen.
Das hab ich so gelöst:
Java:
public class BinaryTree {

	/**
	 * The first node of the tree
	 */
	private BinaryTree first = null;
	private BinaryTree current = first;

	/**
	 * Node
	 */
	Friend friend;
	/**
	 * left child
	 */
	BinaryTree left;
	/**
	 * right child
	 */
	BinaryTree right;

	BinaryTree(Friend friend, BinaryTree left, BinaryTree right) {
		this.friend = friend;
		this.left = left;
		this.right = right;
	}
}

Nun ist die erste Aufgabe, eine Methode public boolean isLeaf() zu erstellen, die zeigt, ob ein Knoten ein Blatt ist. Da isLeaf() keinen Knoten überliefert bekommt, bin ich mir etwas unsicher. Hab das dann so gelöst:

Java:
public boolean isLeaf() {
		BinaryTree testNode = new BinaryTree(friend, left, right);
		if (testNode.left == null && testNode.right == null) {
			return true;
		} else {
			return false;
		}
	}

Ist das so korrekt? (bei testNode bin ich mir unsicher)

Und zu guter letzt noch eine Frage zu der Methode public int getNumberofNodes(), also Anzahl aller Knoten einschließlich der Wurzel. Da hab ich folgendes, bin mir aber sehr unsicher.

Java:
public int getNumberofNodes() {

		int counter = 1;

		if (current.right != null) {
			counter++;
			current = current.right;
			getNumberofNodes();
		}
		if (current.left != null) {
			counter++;
			current = current.left;
			getNumberofNodes();
		}

		current = first;
		return counter;
	}


Wäre super, wenn ihr mir eure Meinung sagt und mir Fehler zeigen könntet! :)
 

faetzminator

Gesperrter Benutzer
[c]isLeaf()[/c] kannst du einfach auf [c]this[/c] anwenden:
Java:
public boolean isLeaf() {
    return left == null && right == null;
}

Edit zum zweiten Problem: Machs einfach rekursiv:
Java:
public int getNumberofNodes() {
    int counter = 1;
    if (right != null) {
       counter += right.getNumberofNodes();
    }
    if (left != null) {
       counter += left.getNumberofNodes();
    }
    return counter;
}

[c]getNumberofNodes()[/c] muss dann einfach auf das Wurzelobjekt angewendet werden.
 
Zuletzt bearbeitet:

supermonkey

Mitglied
Jetzt hab ich noch eine Verständnisfrage. Hab in meinem Konstruktor ja folgendes geschrieben:

Java:
BinaryTree(Friend friend, BinaryTree left, BinaryTree right) {
        this.friend = friend;
        this.left = left;
        this.right = right;
    }

Müsst ich nicht aber this.left und this.right = null setzen? Denn ein neuer Knoten hat ja keine Nachfolger oder?
Aber funktioniert dann
Java:
public boolean isLeaf() {
    return left == null && right == null;
}
noch? Oder gibt mir die Methode dann imer true zurück?
 

KrokoDiehl

Top Contributor
Zu deiner Frage:
Nein darfst du nicht null setzen, weil der Konstruktor dir den linken und rechten Teilbaum als Parameter liefert. D.h. du musst diese beiden Parameter auch entsprechend in deinem (neuen) Baum unterbringen. Sonst könnte man sie ja gleich weglassen.
Wenn du einen (weiteren) Konstruktor wie folgt einfügst:
Java:
public BinaryTree(Friend friend)
...sprich ohne left und right als Parameter, dann ist dieser neue Baum ein Blatt in dem Sinne, dass er keine Teilbäume hat. Sprich hier kann man die
Code:
this.left
und
Code:
this.right
nullen.

Aber andererseits kann man den anderen Konstruktor auch mit
Java:
BinaryTree meinBaum = new BinaryTree(friend, null, null);
aufrufen ;)
 

KrokoDiehl

Top Contributor
Zwingend nicht aber aus Verständlichkeitsgründen schon. Wenn ich einen Blattknoten anlegen will, würde ich eher einen Konstruktor á la
Code:
BinaryTree(Friend)
erwarten. Wenn ich indes eine Wurzel erstelle, würde ich eher etwas wie
Code:
BinaryTree(Friend, Left, Right)
erwarten.
 
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
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

Ähnliche Java Themen

Neue Themen


Oben