我正在尝试实现getmin,delmin和merge方法。这是我到目前为止所做的,但是没有用。我还需要更改插入方法吗?插入方法也仅适用于正数。 BinomialNode类使用Vector子代来存储子代。
公共类BinomialHeap {
BinomialNode[] data;
public int height = 1;
BinomialHeap(){
data = new BinomialNode[1];
}
public boolean insert(int key) {
if (data[0] == null) {
data[0] = new BinomialNode(key);
return true;
}
int i = 0;
for (; i < data.length; i++) {
if (data[i] == null) {
data[i] = new BinomialNode(key);
return true;
}
}
resizeArray();
data[i] = new BinomialNode(key);
return true;
}
public int getMin() {
int min = data[0].key;
for (int i = 0; i < data.length; i++) {
if (data[i] != null && data[i].key < min) {
min = data[i].key;
}
}
return min;
}
public boolean delMin() {
int minpos = 0;
int min = data[0].key;
for (int i = 0; i < data.length; i++) {
if (data[i] != null && data[i].key < min) {
min = data[i].key;
minpos = i;
}
}
for(int i = minpos; i < data.length; i++) {
data[i] = data[i+1];
}
return true;
}
private void resizeArray() {
data = Arrays.copyOf(data, data.length * 2);
}
private BinomialNode merge(BinomialNode t1, BinomialNode t2) {
BinomialNode[] both = Arrays.copyOf(first, t1.length + t2.length);
}
}