Printing out nodes in a disjoint-set data structure in linear time

风流意气都作罢 提交于 2019-12-04 11:43:33
Timothy Shields

Each node should have a next pointer to the next node in the set it is in. The nodes in a set should form a circular linked list.

When a singleton set is first created, the node's next pointer points to itself.

When you merge set with node X and set with node Y (and you've already checked that those sets are different by normalizing to set representatives), you merge the circular linked lists, which you can do by simply swapping X.next and Y.next; so this is a O(1) operation.

To list all the elements in the set containing node X, traverse the circular linked list starting from X.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!