Genericité sur Arbres Binaires
Bonjour a tous ,j'ai un devoir a faire pour transformer une class, en une class en utilisant la généricité.
Mais j'ai une erreur a la ligne 74 (gras souligné).........pourriez-vous m'aider ?
Merci
Voici l'erreur :
Bad operand types for binary operator '<'
first type N
Second type : Object
Where N is a type-variable:
N extend Object declared in class Noeud
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
| public class ArbreBinaire {
public static void main(String[] args) {
Noeud <Integer>racine = new Noeud<>(5);
Noeud <Integer>feuille1 = new Noeud<>(1);
Noeud <Integer>feuille2 = new Noeud<>(2);
Noeud <Integer>feuille3 = new Noeud<>(7);
racine.setFilsGauche(feuille2);
feuille2.setFilsGauche(feuille1);
racine.setFilsDroit(feuille3);
//System.out.println("Arbre : " + racine.toString());
System.out.println("Trouver 1 ? : " + racine.trouver(7));
System.out.println("Trouver 6 ? : " + racine.trouver(6));
}
private static class Noeud<N>{
private Noeud<N>fg;
private Noeud<N> fd;
private N val;
public Noeud (N val){
this.val = val;
}
public Noeud (N val, Noeud<N> fg, Noeud<N> fd){
this(val);
this.fg = fg;
this.fd = fd;
}
public N getValeur(){
return val;
}
public Noeud<N> getFilsGauche(){
return fg;
}
public Noeud<N> getFilsDroit(){
return fd;
}
public void setFilsGauche(Noeud fg){
this.fg = fg;
}
public void setFilsDroit(Noeud fd){
this.fd =fd;
}
public String toString(){
StringBuilder builder = new StringBuilder();
toString(builder, this);
return builder.toString();
}
private static void toString(StringBuilder builder, Noeud noeud){
if(noeud ==null){
builder.append(".");
}else{
builder.append("(");
builder.append(noeud.val);
builder.append(" ");
toString(builder, noeud.fg);
builder.append(" ");
toString(builder, noeud.fd);
builder.append(")");
}
}
public Noeud trouver(N val){
Noeud courant = this;
while(courant != null){
if(val == courant.getValeur()){
return courant;
}else if (val < courant.getValeur()){
courant = courant.getFilsGauche();
}else{
courant = courant.getFilsDroit();
}
}
return null;
}
}
} |