Einen wunderschönen guten Morgen,
also ich habe ein Problem. Ich will habe ein Array und will es in einen binären Suchbaum einfügen. Also Element für Element. Nun übergibt er beispielsweise die 6 zwei oder dreimal. Was ist an meinen Methoden falsch...
also ich habe ein Problem. Ich will habe ein Array und will es in einen binären Suchbaum einfügen. Also Element für Element. Nun übergibt er beispielsweise die 6 zwei oder dreimal. Was ist an meinen Methoden falsch...
Code:
class SearchBinTreeTest{
public static void main (String [] args){
int [] testarray = {11,8,6,48,25,46,2,6,84};
SearchBinTree sbt1 = new SearchBinTree(7);
sbt1.einfuegenRek(8);
sbt1.einfuegenRek(6);
sbt1.inFix();
System.out.println("");
sbt1.einfuegenAusArray(testarray);
sbt1.inFix();
}
Code:
class SearchBinTree{
private SearchBinTree left = null;
private SearchBinTree right = null;
private int value;
SearchBinTree(int v){
left = null;
right = null;
value = v;
}
void einfuegenRek(int elem){
if(elem>=value){
if(right==null){
right = new SearchBinTree(elem);
}
else{
right.einfuegenRek(elem);
}
}
else{
if(left==null){
left = new SearchBinTree(elem);
}
else{
left.einfuegenRek(elem);
}
}
}
void einfuegenAusArray(int[] elemArray){
for (int i=0; i<elemArray.length; i++){
int uebergabewert = elemArray[i];
einfuegenRek(uebergabewert);
}
}
boolean findeRek(int n){
boolean istVorhanden=false;
if (n==value){
istVorhanden=true;
}
else if ((n>value)&&(right!=null)){
right.findeRek(n);
}
else if ((n<value)&&(left!=null)){
left.findeRek(n);
}
else{
istVorhanden=false;
}
return istVorhanden;
}
public void inFix(){
System.out.print("(");
if (left !=null){ // Drucke linken Teilbaum
left.inFix();
}
System.out.print(value); // Drucke eigenen Wert
if (right !=null){ // Drucke rechten Teilbaum
right.inFix();
}
System.out.print(")");
}
}