Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. class Node():
  2. def __init__(self, value, parent, rank):
  3. self.value = value
  4. self.parent = parent
  5. self.rank = rank
  6.  
  7. parentNodeDict = {}
  8.  
  9. def Initialize(Values):
  10. roots = []
  11. for i in range(len(Values)):
  12. a = Node(Values[i], None, 0)
  13. parentNodeDict[Values[i]] = a
  14. a.parent = a
  15. roots.append(a)
  16. return roots
  17.  
  18. def Find(set, value):
  19. valNode = parentNodeDict[value]
  20.  
  21. if valNode.parent == valNode:
  22. return valNode
  23. else:
  24. valNode.parent = Find(set, valNode.parent.value)
  25. return valNode.parent
  26.  
  27. def Merge(set, value1, value2):
  28. root1 = Find(set, value1)
  29. root2 = Find(set, value2)
  30.  
  31. if root1.rank > root2.rank:
  32. root2.parent = root1
  33. else:
  34. root1.parent = root2
  35. if root1.rank == root2.rank:
  36. root2.rank = root2.rank + 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement