UNIONE(FH1, FH2) {
FH = allocoNuovoFHeap();
FH->min = FH1->min;
concatena le liste di FH1 e FH2;
if(FH->min == NULL) oppure ((FH2->min != NULL)and(FH2->min < FH1->min))
FH->min = FH2->min;
FH->nnodi = FH1->nnodi + FH2->nnodi;
FH->nalberi = FH1->nalberi + FH2->nalberi;
rilascia memoria occupata da FH1 e FH2;
return FH;
}
Questa funzione prevede la creazione di un nuovo Heap di Fibonacci, la concatenazione delle liste dei due Heap passati per indirizzo e l'aggiornamento dei campi min, nnodi e nalberi.
Come nel caso dell' inserimento di un nuovo nodo, questa operazione non necessita
della ristrutturazione dello Heap.
La differenza di potenziale è
dal momento che
e
;
il costo ammortizzato dell'operazione di unione è quindi
costante, come per altro il suo costo reale.