Bir okul ödevi ben ascendig sırayla düğüm elemanı dizisi dönmelidir bir yöntem tamamlamak gerekiyor. düğümleri Ben işi yapmak için bir özyinelemeli yöntemini oluşturmak için bir ipucu var, bu yüzden doğru sıralamak için, bir ikili arama ağacında monte ediliyor.
Sorun, bu da bir test çıkışına göre koleksiyonunda tüm öğeleri elde olmamasıdır (java.lang.AssertionError. toArray () koleksiyonunda tüm öğeleri döndürmez)
Ben diziye başa başka yol ile gelip olamazdı ve ben özyineleme bile çalışır eğer tam olarak emin değilim. Herhangi bir yardım çok takdir edilmektedir. Aşağıda benim kodudur:
public class BinarySearchTree<E extends Comparable<E>> implements
IfiCollection<E> {
Node root;
Node current;
int size = 0;
int i = 0;
public class Node {
E obj;
Node left, right;
public Node(E e) {
obj = e;
}
} // END class Node
[...]
public E[] toArray(E[] a) {
Node n = root;
a = sort(n, a);
return a;
}
public E[] sort(Node n, E[] a) { //, int idx, E[] a) {
if (n.left != null) {
current = n.left;
sort(current, a);
}
a[i] = current.obj;
i++;
if (n.right != null) {
current = n.right;
sort(current, a);
}
return a;
} // END public Node sort
[...]
} // END class BinarySearchTree
Deney çıkışı:
java.lang.AssertionError. toArray () koleksiyonu .: TestPerson ( Bender) olarak compareTo (TestPerson ( Fry)) == 0 beklenen tüm unsurları döndürmez: true ama oldu: inf1010.assignment de yanlış inf1010.assignment.IfiCollectionTest.toArray de inf1010.assignment.IfiCollectionTest.assertCompareToEqualsNoOrder (IfiCollectionTest.java:100) de inf1010.assignment.IfiCollectionTest.assertCompareToEquals (IfiCollectionTest.java:83) en .IfiCollectionTest.assertCompareToEquals (IfiCollectionTest.java:74) ( IfiCollectionTest.java:202)
protected void assertCompareToEquals(TestPerson actual,
TestPerson expected, String msg) {
assertTrue(actual.compareTo(expected) == 0, String.format( // l:74
%s: %s.compareTo(%s) == 0, msg, actual, expected));
}
[...]
protected void assertCompareToEquals(TestPerson[] actual,
TestPerson[] expected, String msg) {
for (int i = 0; i < actual.length; i++) {
TestPerson a = actual[i];
TestPerson e = expected[i];
assertCompareToEquals(a, e, msg); // l:83
}
}
[...]
protected void assertCompareToEqualsNoOrder(TestPerson[] actual,
TestPerson[] expected, String msg) {
assertEquals(actual.length, expected.length, msg);
TestPerson[] actualElements = new TestPerson[actual.length];
System.arraycopy(actual, 0, actualElements, 0, actual.length);
TestPerson[] expectedElements = new TestPerson[expected.length];
System.arraycopy(expected, 0, expectedElements, 0, expected.length);
Arrays.sort(expectedElements);
Arrays.sort(actualElements);
assertCompareToEquals(actualElements, expectedElements, msg); // l:100
}
[...]
@Test(dependsOnGroups = { collection-core },
description=Tests if method toArray yields all the elements inserted in the collection in sorted order with smallest item first.)
public void toArray() {
TestPerson[] actualElements = c.toArray(new TestPerson[c.size()]);
for (int i = 0; i < actualElements.length; i++) {
assertNotNull(actualElements[i],
toArray() - array element at index + i + is null);
}
TestPerson[] expectedElements = allElementsAsArray();
assertCompareToEqualsNoOrder(actualElements, expectedElements, // l:202
toArray() does not return all the elements in the collection.);
Arrays.sort(expectedElements);
assertCompareToEquals(actualElements, expectedElements,
toArray() does not return the elements in sorted order with
+ the smallest elements first.);
TestPerson[] inArr = new TestPerson[NAMES.length + 1];
inArr[NAMES.length] = new TestPerson(TEMP);
actualElements = c.toArray(inArr);
assertNull(actualElements[NAMES.length],
The the element in the array immediately following the
+ end of the list is not set to null);
}
Ben, bu oldukça geniş olduğunu Test kodunun daha gönderilmesi gerekiyor eğer bilmiyorum ve bir yazı için biraz fazla olabilir?













