hallo leute ich hab folgendes problem.
ich muss ein AVL baum schreiben das Comparable implementiert und generisch ist.
nun so sehen meine zwei Klassen aus:
beim build bekomm ich folgende fehlerausgabe:
kann mir bitte einer sagen wo der fehler ist? ich raff generics einfach nicht
ich hab schon alles mögliche ausprobiert.
also bitte hilft mir.
mfg sidex
edit: was ich vergessen habe zu sagen. eigentlich sollte die AVLtree klasse so aussehen:
AVLtree<T extends Comparable<Integer>
aber dann bekomm ich bei build ne meldung dass er das Objekt root.right und root.left nicht kennt.
aber wieso meldet der das? werden bei den generischen sachen die Typen nicht erst während der Laufzeit bekannt gegeben?
ich muss ein AVL baum schreiben das Comparable implementiert und generisch ist.
nun so sehen meine zwei Klassen aus:
Code:
import java.lang.*;
public class AVLnode implements Comparable<Integer>
{
public AVLnode left; //Referenz auf das linke Kindknoten
public AVLnode right; //Referenz auf das rechte Kindknoten
AVLnode top; //Referenz auf das Elternknoten
int level;
int data;
public AVLnode (AVLnode left, AVLnode right, int data)
{
this.left = left;
this.right = right;
this.data = data;
AVLnode puffer = null;
if ( left != null )
puffer = left;
else
puffer = right;
if ( puffer != null )
{
while ( puffer != null )
{
++level;
puffer = puffer.top;
}
}
else
level = 0;
}
public int slope (int n1, int n2)
{
return Math.abs(n1 - n2);
}
public int compareTo(Integer n1)
{
if (this.data == n1)
return 0;
else
if ( this.data < n1)
return -1;
else
return 1;
}
}
Code:
public class AVLtree<T extends AVLnode & Comparable<Integer>>
{
private T root;
int Llevel;
int Rlevel;
int compData;
public AVLtree()
{
root = null;
}
public void search(int value)
{
search2( root, value );
}
private T search2( T root, int value)
{
if ( root == null )
return null;
else
compData = root.compareTo( value );
switch ( compData )
{
case 1 : return search2(root.right, value);
break;
case-1 : return search2(root.left, value);
break;
case 0 : return root;
break;
}
}
public void rebalance()
{
}
public void depth( T root)
{
}
public void insert()
{
}
}
beim build bekomm ich folgende fehlerausgabe:
Code:
Compiling 3 source files to /Users/sidex/Stree/bin
/Users/sidex/Stree/src/AVLtree.java:26: search2(T,int) in AVLtree<T> cannot be applied to (AVLnode,int)
case 1 : return search2(root.right, value);
^
/Users/sidex/Stree/src/AVLtree.java:28: search2(T,int) in AVLtree<T> cannot be applied to (AVLnode,int)
case-1 : return search2(root.left, value);
^
2 errors
kann mir bitte einer sagen wo der fehler ist? ich raff generics einfach nicht
ich hab schon alles mögliche ausprobiert.
also bitte hilft mir.
mfg sidex
edit: was ich vergessen habe zu sagen. eigentlich sollte die AVLtree klasse so aussehen:
AVLtree<T extends Comparable<Integer>
aber dann bekomm ich bei build ne meldung dass er das Objekt root.right und root.left nicht kennt.
aber wieso meldet der das? werden bei den generischen sachen die Typen nicht erst während der Laufzeit bekannt gegeben?