Implementare Utilizare: Date Structura de laborator Exercitarea pentru luna octombrie / 28/2011, pentru a face: Punerea în aplicare a unui arbore binar de căutare
Problemă: K [] întoarcerea metodelor prin precomandă (), inordine () și postordine ()
Problemă Detalii: BST trebuie să aibă doar rădăcină ca parametru. Metodele de mai sus menționate au fost descrise într-o interfață dată de profesorul nostru ca următoarele:
/**
* Returns an array of keys filled according
* to the pre-order traversing in a BST.
*/
public K[] preOrder();
public K[] order();
public K[] postOrder();
Aș putea instantia matrice generic cu următorul cod:
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;
}
Dar, când am testat metoda folosind o clasă de testare, de asemenea, furnizate de profesorul nostru, am primit un NullPointerException, Wich cred că se referă la rădăcina BST, care a fost odată instanțiat, dar a fost eliminat într-un punct în testul și când solicită din nou metoda, metoda returneaza null, nu un array gol cum era de așteptat de 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());
(...)
Știind că nu se poate schimba tipul de întoarcere și nici parametrii metodei, ce pot face pentru a evita această excepție? Pot cumva obține tipul de componente și să-l utilizați pentru a instantia matrice gol (Cum m-am face acest lucru?)?
Orice sfaturi pentru a îmbunătăți codul meu sunt de asemenea binevenite.













