private static Binomialnode merge(Binomial heap1, Binomial heap2) {
        //Jos toisen juuri on tyhjä, palautetaan suoraan toinen
        if (heap1.root == null) {
            return heap2.root;
        } else if (heap2.root == null) {
            return heap1.root;
        }
        //Kumpikaan juurilista ei siis ole tyhjä. Käydään molemmat läpi käyttäen aina pienimmän arvon omaavaa solmua.
        Binomialnode root;		  
        Binomialnode last;		  
        Binomialnode next1 = heap1.root,
                next2 = heap2.root; 
        if (heap1.root.value <= heap2.root.value) {
            root = heap1.root;
            next1 = next1.sibling;
        } else {
            root = heap2.root;
            next2 = next2.sibling;
        }
        last = root;
        //Käy molemmat juurilistat läpi kunnes toinen loppuu.
        while (next1 != null && next2 != null) {
            if (next1.value <= next2.value) {
                last.sibling = next1;
                next1 = next1.sibling;
            } else {
                last.sibling = next2;
                next2 = next2.sibling;
            }

            last = last.sibling;
        }

        //Nyt toinen juurilista on loppunut. Jatketaan jäljellä olevasta juurilistasta loput listaan.
        if (next1 != null) {
            last.sibling = next1;
        } else {
            last.sibling = next2;
        }
        return root;

    }