**fig6_55.txt** /* 1*/ template /* 2*/ Binom_Node* /* 3*/ Binom_Heap:: /* 4*/ Merge( Binom_Node *H1, Binom_Node *H2 ) /* 5*/ { /* 6*/ Binom_Node *H3, *T1, *T2, *T3; /* 7*/ if( H1 == NULL ) /* 8*/ return H2; /* 9*/ if( H2 == NULL ) /*10*/ return H1; /*11*/ if( H1->Rank < H2->Rank ) /*12*/ { /*13*/ Extract( T1, H1 ); /*14*/ H3 = Merge( H1, H2 ); /*15*/ T1->L_Sib = H3->L_Sib; /*16*/ H3->L_Sib->R_Sib = NULL; /*17*/ T1->R_Sib = H3; /*18*/ H3->L_Sib = T1; /*19*/ return T1; /*20*/ } /*21*/ if( H2->Rank < H1->Rank ) /*22*/ return Merge( H2, H1 ); /*23*/ // Otherwise, first two trees have same rank. /*24*/ Extract( T1, H1 ); /*25*/ Extract( T2, H2 ); /*26*/ H3 = Merge( H1, H2 ); /*27*/ T3 = Merge_Tree( T1, T2 ); /*28*/ return Merge( T3, H3 ); /*29*/ }