******** fig8.13 ********** /* assumes root1 and root2 are roots */ /* union is a C keyword, so this routine is named set_union */ void set_union( DISJ_SET S, set_type root1, set_type root2 ) { if( S[root2] < S[root1] ) /* root2 is deeper set */ S[root1] = root2; /* make root2 new root */ else { if( S[root2] == S[root1] ) /* same height, so update */ S[root1]--; S[root2] = root1; /* make root1 new root */ } }