Java堆实现

时间:2016-01-26 07:07:58

标签: java heap

您将从以下界面实现堆:

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;
}

}“

1 个答案:

答案 0 :(得分:0)

问题的主要关注点似乎是数据存储在树内部(我假设为heap tree),而不是实现with an array/list。 事实上,我将Node Heap视为“由节点实现的堆”,但它也可以作为类名。

虽然你可以在一个类中实现它,但考虑到Java在Swing包中只有一个tree model这个事实,implement你自己的树很常见,这肯定涉及更多的类(可以是内在的或匿名的)。 这个问题似乎并不介意。

更新:代码看起来是一个好的开始,假设你完成后不会实际返回null。