Mise en oeuvre Utilisation: Structure des données de laboratoire pour l'exercice Octobre / 28/2011 pour le faire: Mettre en oeuvre un binaire Recherche Arbre
Problème: K [] retour des méthodes pré-commande (), afinde () et postorder ()
Problème Détails: Le BST ne doit avoir sa racine en tant que paramètre. Les méthodes mentionnées ci-dessus ont été décrites dans une interface donnée par notre professeur comme suit:
/**
* Returns an array of keys filled according
* to the pre-order traversing in a BST.
*/
public K[] preOrder();
public K[] order();
public K[] postOrder();
Je pourrais instancier le tableau générique avec le code suivant:
public K[] preOrder() {
if (root == null) { return null; }
ArrayList<K> list = new ArrayList<K>();
preOrderRecursive(root,list);
K[] toReturn = (K[]) Array.newInstance(this.getRoot().getKey().getClass(), list.size());
for (int i = 0; i < list.size(); i++) {
toReturn[i] = list.get(i);
}
return toReturn;
}
Mais, quand je teste la méthode utilisant une classe d'essai a également fourni par notre professeur, je suis un NullPointerException, wich je pense se réfère à la racine du BST, qui a été une fois instancié, mais a été retiré à un moment dans le test et quand il appelle à nouveau la méthode, la méthode renvoie null, pas un tableau vide comme prévu par le test:
(...)
tree1 = new BSTImpl<Integer, Integer>();
for (int i = 0; i < SIZE; i++) {
tree1.insert(i, i);
}
tree1.remove(1);
tree1.remove(2);
tree1.remove(3);
tree1.remove(4);
assertArrayEquals(new Integer[]{},tree1.preOrder());
(...)
Sachant que je ne peux pas changer le type de retour, ni les paramètres de la méthode, ce que je peux faire pour éviter cette exception? Puis-je obtenir en quelque sorte le type de composant et l'utiliser pour instancier le tableau vide (Comment as-je faire cela?)?
Tous les conseils pour améliorer mon code sont également les bienvenus.













