Guten Tag,
ich hab ein Problem mit einer Übungsaufgabe
Aufgabenstellung:
Es soll eine Klasse BinTree mit einer inneren Klasse Node erstellt werden. Dazu noch eine Klasse Element die Comparable<Element> implementiert.
Nun soll eine insert Methode in BinTree geschrieben werden nach folgendem muster. public boolean insert(Element e) anhand der compareTo Methode sollen die Elemente links oder rechts im Baum landen. Bei Gleichheit soll false zurück kommen.
Das ganze habe ich bis jetzt so gemacht:
Mein Problem ist nun die insert Methode.
Der erste Ansatz war rekursiv über 2 Methoden (Schematisch so)
Das geht nur leider nicht da insert einen boolean zurück gibt.
Rekursiv klappt so also nicht an dieser Stelle.
Doch Interativ bekomme ich es nicht hin. kann mir da jemand einen Tipp geben?
LG
ich hab ein Problem mit einer Übungsaufgabe
Aufgabenstellung:
Es soll eine Klasse BinTree mit einer inneren Klasse Node erstellt werden. Dazu noch eine Klasse Element die Comparable<Element> implementiert.
Nun soll eine insert Methode in BinTree geschrieben werden nach folgendem muster. public boolean insert(Element e) anhand der compareTo Methode sollen die Elemente links oder rechts im Baum landen. Bei Gleichheit soll false zurück kommen.
Das ganze habe ich bis jetzt so gemacht:
Java:
public class BinTree {
protected Node root = null;
protected class Node {
Element value;
Node left, right;
Node(Element value, Node left, Node right){
this.value = value;
this.left = left;
this.right = right;
}
public String toString() {
return value.toString();
}
public boolean isEmpty() {
if(root == null)
return true;
return false;
}
public void inorder(Node n) {
if (n.left != null) inorder(n.left);
System.out.println(n.toString());
if (n.right != null) inorder(n.right);
}
public boolean insert(Element e) {
if(root == null) {
root = new Node(e,null,null);
return true;
}
return false;
}
}
class Element implements Comparable<Element> {
private int value;
Element(int value) {
this.value = value;
}
public int compareTo(Element e) {
if(getValue() > e.getValue())
return 1;
if(getValue() < e.getValue())
return -1;
return 0;
}
public String toString() {
return ""+getValue();
}
public int getValue() {
return value;
}
}
}
Mein Problem ist nun die insert Methode.
Der erste Ansatz war rekursiv über 2 Methoden (Schematisch so)
Java:
void rekFuegeEin ( Knoten ast ,i n twert ) {
if( wert<ast.inhalt ) {
if(ast.links ==null)
ast.links =newKnoten(wert);
else rekFuegeEin (ast.links,wert);
}
else {
if(ast.rechts==null)
ast.rechts=newKnoten(wert);
else rekFuegeEin(ast.rechts,wert);
}
}
void fuegeEin(int wert) {
if(wurzel==null)
wurzel=newKnoten(wert);
else rekFuegeEin( wurzel,wert);
}
Das geht nur leider nicht da insert einen boolean zurück gibt.
Rekursiv klappt so also nicht an dieser Stelle.
Doch Interativ bekomme ich es nicht hin. kann mir da jemand einen Tipp geben?
LG