Why not implement Union-Find structure using root as the direct parent? I just learned about using UF with union by rank and path compression. A path can be compressed via attaching a node to its root after Find is called on the node. If the goal here is to flatten the tree, why not just implement the tree such that each node is directly attached to its root (instead of its true parent)? That way, maximum compression would be achieved from the start. What is the con of this as long as union by rank is used along with it?
Because then a Union operation would be very slow: when you Union two trees, you would have to reparent all of the nodes in one of the trees.