Megvalósítás használat: adatstruktúra Laborfeladat október / 28/2011 Ehhez: Végre egy bináris keresési fa
Probléma: K [] visszatérése módszerek Előrendelés (), inorder () és postorder ()
Probléma Részletek: A BST kell csak a gyökér, mint a paraméter. A módszerek fent említett írtak le egy interfész által megadott mi professzor, mint a következő:
/**
* Returns an array of keys filled according
* to the pre-order traversing in a BST.
*/
public K[] preOrder();
public K[] order();
public K[] postOrder();
Tudtam példányosítunk generikus tömböt az alábbi kódot:
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;
}
De amikor tesztelték a módszert a vizsgálati osztály is biztosítja a tanár, kaptam egy NullPointerException, wich azt hiszem utal a gyökér a BST, hogy már egyszer példányai, de már eltávolították egy pontján a vizsgálati és amikor meghívja a módszerrel újra, és az eljárás visszatér null, nem egy üres tömb által várt teszt:
(...)
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());
(...)
Tudva, hogy nem tudok változtatni a visszatérési típusa, sem a paramétereket a módszer, hogy mit tehetek, hogy elkerülje ezt a kivétel? Tud én valahogy az alkatrész típusát és használja példányosításához az üres array (Hogy tudom ezt megtenni?)?
Bármilyen tipp, hogy javítsa a kód is fogadunk.













