Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Node():
- def __init__(self, value, parent, rank):
- self.value = value
- self.parent = parent
- self.rank = rank
- parentNodeDict = {}
- def Initialize(Values):
- roots = []
- for i in range(len(Values)):
- a = Node(Values[i], None, 0)
- parentNodeDict[Values[i]] = a
- a.parent = a
- roots.append(a)
- return roots
- def Find(set, value):
- valNode = parentNodeDict[value]
- if valNode.parent == valNode:
- return valNode
- else:
- valNode.parent = Find(set, valNode.parent.value)
- return valNode.parent
- def Merge(set, value1, value2):
- root1 = Find(set, value1)
- root2 = Find(set, value2)
- if root1.rank > root2.rank:
- root2.parent = root1
- else:
- root1.parent = root2
- if root1.rank == root2.rank:
- root2.rank = root2.rank + 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement