Как реализовать merge и del min в биноминальной куче - PullRequest
0 голосов
/ 06 января 2019

Я пытаюсь реализовать метод getmin, delmin и merge. Это то, что я сделал до сих пор, но это не работает. Мне также нужно изменить метод вставки? Метод вставки также работает только для положительных чисел. Класс BinomialNode использует Vector childs для хранения дочерних элементов.

публичный класс 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);


}

}

...