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.