您将从以下界面实现堆:
public interface Heap<V extends Comparable<V>> {
public void add(V value);
public V[] toArray(V[] array);
public V remove();
public void fromArray(V[] array);
public V[] getSortedContents(V[] array);
}
但是,堆应该实现为节点堆, 是的,内部实现应该是树而不是数组。 getSortedContents 方法应该在内部转换 堆入其数组表示,并执行堆排序 它,然后返回数组作为结果。
这个提示对我来说有点混乱。我的问题是这究竟是什么要求我做的?我无法理解提示。 它是否要我创建一个名为NodeHeap.java的类来实现Heap?
更新: 那么我的NodeHeap类看起来像这样吗?或者我完全错了
public class NodeHeap<V> implements Heap<V> {
@Override
public void add(V value) {
}
@Override
public V[] toArray(V[] array) {
return null;
}
@Override
public V remove() {
return null;
}
@Override
public void fromArray(V[] array) {
}
@Override
public V[] getSortedContents(V[] array) {
return null;
}
}“
答案 0 :(得分:0)
问题的主要关注点似乎是数据存储在树内部(我假设为heap tree),而不是实现with an array/list。 事实上,我将Node Heap视为“由节点实现的堆”,但它也可以作为类名。
虽然你可以在一个类中实现它,但考虑到Java在Swing包中只有一个tree model这个事实,implement你自己的树很常见,这肯定涉及更多的类(可以是内在的或匿名的)。 这个问题似乎并不介意。
更新:代码看起来是一个好的开始,假设你完成后不会实际返回null。