Unioning by rank where you pass in the root nodes of the two sets being Unioned works well. If you pass in any other node, the resulting set is invalid. This is due to the fact that I'm not running a Find() on eash set before Unioning. Mainly because the source documents I'm using use the depth() function to find 'node depth/rank' or 'tree height' depending on what is passed to it. This stage is a stepping point for a more efficient version of this data structure. I'm not refactoring this project again just to delete it for a shalow threaded approach. The Reversed Trees version of Disjoint Set is done as far as I'm concerned. Moving on...