Bryan:
- Ce n'est pas tout le code contenu dans la classe, mais si cela ne suffit pas je vais ajouter le reste aussi.
- add () vise à ajouter la valeur à la position correcte dans la BST à l'aide de la touche. Si la clé existe déjà, ne rien faire.
contains () est censé revenir Vrai si la clé spécifiée est dans l'arbre
```public class Node { public Node left; public Node right; public int key; public String value; public void add ( int key, String value ) { if ( key.compareTo ( this.key ) < 0) { if ( left != null ) left.add ( key, value ) else left = new Node ( key, value ); } else if ( key.compareTo ( this.key ) > 0 ) { if ( right != null ) right.add ( key, value ); else right = new Node ( key, value); } else this.value = value; } public boolean contains ( int key ) { if ( this.key == ( key ) ) return value; if ( key.compareTo ( this.key ) < 0 ) return left == null ? null : left.contains ( key ); else return right == null ? null : right.contains ( key ); } }
Jason:
Le problème est que int
est primitif et celui - ci ne met pas en œuvre Comparable de sorte que vous ne pouvez pas utiliser int.compareTo, mais la variation boxed ne entier. Vous pouvez simplement utiliser des entiers au lieu de int, ou bien utiliser Integer.compare (1, 2) et conserver votre utilisation de primitives.
public static class Node {
public Node left;
public Node right;
public Integer key;
public String value;
public Node(Integer key, String value) {
this.key = key;
this.value = value;
}
public void add(Integer key, String value) {
if (key.compareTo(this.key) < 0) {
if (left != null)
left.add(key, value);
else
left = new Node(key, value);
} else if (key.compareTo(this.key) > 0) {
if (right != null)
right.add(key, value);
else
right = new Node(key, value);
} else
this.value = value;
}
public boolean contains(Integer key) {
if (this.key.intValue() == (key)) {
return true;
}
if (key.compareTo(this.key) < 0)
return left == null ? null : left.contains(key);
else
return right == null ? null : right.contains(key);
}
}