如何在二项式堆中实现合并和最小化

时间:2019-01-06 17:52:15

标签: java binomial-heap

我正在尝试实现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);


}

}

0 个答案:

没有答案