Hallo,
kann mir jemand bei folgender Aufgabe helfen?
Aufgabe:
Vervollständigen Sie die Methode BinarySearchTree<T> subTree
(T c). Falls der Inhalt o im Baum existiert, soll die Methode subTree den
Teilbaum entfernen, dessen Wurzel o als Inhalt enthält. Diese Wurzel soll
mit ihrem Teilbaum als Ergebnis zurückgegeben werden. Kommt o nicht als
Inhalt im Baum vor, soll null zurückgegeben werden.
Klasse:
BinarySearchTree<T extends Comparable<T>>
public class BinarySearchTree<T extends Comparable<T>> {
private T content;
private BinarySearchTree<T> leftChild, rightChild;
public BinarySearchTree () {…}
public T getContent(){…}
public boolean isEmpty() {…}
public boolean isLeaf(){…}
Problem:
Leider funktioniert der Code nur für bestimmte Teile im Baum und ich komme leider nicht weiter. Ggf. muss ich aber auch einen anderen Ansatz wählen.
Danke vorab.
//--------------------------------------------------
Mein Code (zwischen den Markierungen):
//--------------------------------------------------
kann mir jemand bei folgender Aufgabe helfen?
Aufgabe:
Vervollständigen Sie die Methode BinarySearchTree<T> subTree
(T c). Falls der Inhalt o im Baum existiert, soll die Methode subTree den
Teilbaum entfernen, dessen Wurzel o als Inhalt enthält. Diese Wurzel soll
mit ihrem Teilbaum als Ergebnis zurückgegeben werden. Kommt o nicht als
Inhalt im Baum vor, soll null zurückgegeben werden.
Klasse:
BinarySearchTree<T extends Comparable<T>>
public class BinarySearchTree<T extends Comparable<T>> {
private T content;
private BinarySearchTree<T> leftChild, rightChild;
public BinarySearchTree () {…}
public T getContent(){…}
public boolean isEmpty() {…}
public boolean isLeaf(){…}
Problem:
Leider funktioniert der Code nur für bestimmte Teile im Baum und ich komme leider nicht weiter. Ggf. muss ich aber auch einen anderen Ansatz wählen.
Danke vorab.
//--------------------------------------------------
Mein Code (zwischen den Markierungen):
//--------------------------------------------------
Code:
public BinarySearchTree<T> subTree ( T o )
{
if ( !isEmpty() )
{
//--------------------------------------------------
if ( !leftChild.isEmpty() )
{
if ( leftChild.getContent().equals(o) )
{
BinarySearchTree tmp = leftChild;
leftChild = null;
return tmp;
}
else
{
return leftChild.subTree(o);
}
}
else if ( !rightChild.isEmpty() )
{
if ( rightChild.getContent().equals(o) )
{
BinarySearchTree tmp = rightChild;
rightChild = null;
return tmp;
}
else
{
return rightChild.subTree(o);
}
}
else
{
return null;
}
//--------------------------------------------------
}
else
{
return null;
}
}