Baum rekursiv durchlaufen

Hi,
ich komme grad nicht weiter und hoffe Ihr könnt mir helfen :)
Ich möchte Knoten aus einem Baum löschen, dazu muss ich ja zuerst den gewünschten Knoten im Baum suchen. Da ist jedoch schon mein erstes Problem, ich kreige es nicht hin, aber bin der Meinung das man es rekursiv machen kann...

Hier ist mein Code:
Danke für Eure Hilfe
Java:
package aufgabe2;

import java.util.LinkedList;

import de.tu.tree.Tree;

public class BinarySearchTree implements Tree<Integer> {

	protected BinTreeNode root;
	protected int size = 0;
	private boolean dataAlreadyExisted; 		//Gibt an, ob es den einzufügenden Wert im Baum bereits gibt.

	public BinarySearchTree() {
		this.root = null;
	}

	public BinarySearchTree(BinTreeNode n) {
		root = n;
	}

	public boolean insert(Integer data) {
		
		if (data != null) {							//Kann nur einfügen, wenn auch ein gültiger Wert übergeben wird.
			this.dataAlreadyExisted = false;		//Den Wert gibt es bisher noch nicht.
			this.root = insert(data, this.root);	//Rufe die zweite insert-Methode auf, um den Wert einzufügen.
			
			return this.dataAlreadyExisted;			//Gebe zurück, ob der Wert existiert oder nicht.
		}
		return false;						//Gebe false zurück, falls der Wert null ist.
	}

	private BinTreeNode insert(Integer data, BinTreeNode root) {
		if (root == null) {											//Einfügen in einem Blatt oder wenn der Baum leer ist. Wurzel des Teilbaums ist null, wenn Blatt oder Baum leer.
			this.size++;									//Erhöhe den Wert um 1.
		
			return new BinTreeNode(data);				//Erstelle den neuen Baum.
		
		} else {													//Wir sind noch an keinem Blatt angekommen und suchen weiter!
			if (data.compareTo(root.getData()) < 0) {				//Wir suchen im linken Teilbaum weiter, da der neue Wert kleiner als die Wurzel ist.
				root.setLeft(insert(data, root.getLeft()));			//Rufe rekursiv insert wieder auf für den neuen Teilbaum und setze dann den linken Teilbaum neu!
			
			} else if (data.compareTo(root.getData()) > 0) {		//Wert ist größer als die Wurzel also suchen wir im rechten Teilbaum weiter.
				root.setRight(insert(data, root.getRight()));		//Rufe rekursive insert wieder auf für den neuen Teilbaum und setze dann den rechten Teilbaum neu.
			
			} else {							//Den Wert gibt es schon im Baum.
				this.dataAlreadyExisted = true;	//Gebe den Baum einfach zurück und setze Boolean auf true.
			}
			return root;
		}
	}
	
	public boolean remove(Integer i) {
		
		if(root == null || i == null){
		return false;
		}
		else if(i.compareTo(root.getData()) < 0) {	// Wir suchen im linken Teilbaum, da der Wert kleiner als die Wurzel ist.
			 root.setLeft(remove(i));			//PROBLEM!!! suchen im linken Teilbaum
			}
		else if (i.compareTo(root.getData()) > 0) {				// Wert ist größer als die Wurzel also suchen wir im rechten Teilbaum weiter.
				//???												//PROBLEM!!! Rufe rekursiv insert wieder auf für den neuen Teilbaum und setze dann den rechten Teilbaum neu!
			}	
		if(root.isLeaf()) {							// kein Nachfolger; Fall 1
				root = null; 					// gefundenen Knoten einfach vernichten
				size--;
				return true;
			}
		else if (root.right.isLeaf() || root.left.isLeaf()){	// Ein Nachfolger; Fall 2
			if (root.right == null){				// Falls der rechte Zweig "leer" ist
				root = root.left;		// Der alte Knoten wird durch den linken Zweig ersetzt 
				size--;
			}
		else if (root.left == null){					// Falls der linke Zweig "leer" ist
			root = root.right;		// Der alte Knoten wird durch den rechten Zweig ersetzt 	
			size--;
		}
		else if (root.right != null && root.left != null){	// Zwei Nachfolger; Fall 3
			
		}
			
		}
		
		else
				return false;
				}
}

Java:
package aufgabe2;

import de.tu.tree.BinNode;


public class BinTreeNode implements BinNode<Integer> {
	
	
	Integer data;
	BinTreeNode left;
	BinTreeNode right;
	
	public BinTreeNode(Integer data) {
		this.data = data;
	}

	public Integer getData() {
		return data;
	}

	public void setData(Integer data) {
		this.data = data;
	}

	public BinTreeNode getLeft() {
		return left;
	}

	public void setLeft(BinTreeNode left) {
		this.left = left;
	}

	public BinTreeNode getRight() {
		return right;
	}

	public void setRight(BinTreeNode right) {
		this.right = right;
	}

	public boolean isLeaf() {
		return right == null && left == null;
	}
	
	public String toString(){
		return data.toString();
	}

}
 

Big-Taylor

Mitglied
Wenn du eine Methode schreiben möchtest, um einen Knoten in einem Suchbaum zu finden, solltest du dir erstmal überlegen, wie der Methodenkopf aussehen sollte. Also welchen Rückgabetyp musst du wählen, also was genau willst du wissen und welche Parameter musst du übergeben.
 
Ich will eine Methode schreiben, die einen Konten löscht und wenn dies erfolgreich geschehen ist, soll die methode true zurück geben und wenn der knoten nicht existiert false. Aber um Knoten zu löschen muss die methode erst mal den Knoten mit dem i-wert finden und dass ist mein Problem.
Hoffe Ihr könnt helfen
 
Ä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 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
G AVL Baum Java Basics - Anfänger-Themen 20
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
H Passwort Brute Force rekursiv Java Basics - Anfänger-Themen 7
1 Array rekursiv durchlaufen Java Basics - Anfänger-Themen 8
E Rekursiv Objekte erzeugen - geht das? Java Basics - Anfänger-Themen 2
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
R0m1lly Kombinationen aus int array rekursiv Java Basics - Anfänger-Themen 2
L Rekursiv gegebenes Passwort herausfinden. Java Basics - Anfänger-Themen 2
P9cman Char Index rekursiv finden Java Basics - Anfänger-Themen 4
B Methoden Rekursiv festellen, ob eine Zahl gerade-oft vorkommt oder nicht Java Basics - Anfänger-Themen 4
S Methoden Methodenaufruf rekursiv zählen Java Basics - Anfänger-Themen 4
B Array nach Wert prüfen rekursiv Java Basics - Anfänger-Themen 5
sashady Zahlen rekursiv zerlegen und Ziffern addieren Java Basics - Anfänger-Themen 38
jhCDtGVjcZGcfzug Fibonacci Zahlen rekursiv und iterativ Java Basics - Anfänger-Themen 21
H Binominalkoeffizient tail-rekursiv in java darstellen Java Basics - Anfänger-Themen 0
GAZ Tribonacci Folge Rekursiv Java Basics - Anfänger-Themen 11
G Primzahlen von Rekursiv nach Iterativ Java Basics - Anfänger-Themen 6
A Ackermmanfunktion rekursiv Java Basics - Anfänger-Themen 4
A Binärbaum rekursiv durchsuchen und Referenz zurückgeben Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben