Advertisement
Guest User

Untitled

a guest
Oct 25th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.64 KB | None | 0 0
  1. #line = [5, 1, 10, 7, 8, 11, 3,15]
  2. #line = [5,2,3,4,1]
  3. #line = [5, 1, 10, 7, 8, 11, 13]
  4. #line = [5,2]
  5. line=[6,3,10,1,5,8,12,4,7,9,11,13]
  6.  
  7.  
  8.  
  9. class Elm():
  10. def __init__(self, data, parent, left, right):
  11. self.data = data
  12. self.parent = parent
  13. self.left = left
  14. self.right = right
  15.  
  16.  
  17.  
  18.  
  19. def add(self, data):
  20. if data < self.data:
  21. if self.left is None:
  22. self.left = Elm(data, self, None, None)
  23. else:
  24. self.left.add(data)
  25. else:
  26. if self.right is None:
  27. self.right = Elm(data, self, None, None)
  28. else:
  29. self.right.add(data)
  30.  
  31. # def leftrotate(self, data):
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39. class BinaryTree():
  40.  
  41. def __init__(self):
  42. self.root = None
  43.  
  44.  
  45. def add1(self,data):
  46. if self.root is None:
  47. self.root = Elm(data, None, None, None)
  48. else:
  49. self.root.add (data)
  50.  
  51.  
  52. # def findmin(self):
  53. # e = self.root
  54. # while e.left!=None:
  55. # e = e.left
  56. # return e.data
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66. def printlevel(self, root, level):
  67. if root == None:
  68. return
  69. self.printlevel(root.left, level+1)
  70. print ("\t" * level + str(root.data))
  71. self.printlevel(root.right, level+1)
  72.  
  73.  
  74.  
  75. def print_tree(self,root):
  76.  
  77. #i=0
  78. #while (i <= len(line))
  79. self.printlevel(self.root, 0)
  80.  
  81. #i+=1
  82.  
  83.  
  84.  
  85. b = BinaryTree()
  86. for i in line:
  87. b.add1(i)
  88.  
  89. #print(b.findmin())
  90.  
  91. def LeftRotate(b,x):
  92. elm_find = b.root
  93. while elm_find != None:
  94. if x > elm_find.data:
  95. elm_find = elm_find.right
  96. elif x < elm_find.data:
  97. elm_find = elm_find.left
  98. else:
  99. y = x.left
  100. x.left = y.right
  101. if x.parent != None:
  102. if x.parent.left == x:
  103. x.parent.left = y
  104. else:
  105. x.parent.right = y
  106. y.parent = x.parent
  107. x.parent = y
  108. y.right = x
  109. return b
  110.  
  111. def l(x):
  112. LeftRotate(x)
  113.  
  114. b.print_tree(line)
  115. #print(b.l(10))
  116. #print(b.__delitem__(10))
  117. print(LeftRotate(b,10))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement