Guest User

Untitled

a guest
May 28th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.18 KB | None | 0 0
  1. class Node:
  2. def __init__(self, val):
  3. self.val = val
  4. self.left = None
  5. self.right = None
  6.  
  7. def get(self):
  8. return self.val
  9.  
  10. def set(self, val):
  11. self.val = val
  12.  
  13. def getChildren(self):
  14. children = []
  15. if (self.left != None):
  16. children.append(self.left)
  17. if (self.right != None):
  18. children.append(self.right)
  19. return children
  20.  
  21.  
  22. class BST:
  23. def __init__(self):
  24. self.root = None
  25.  
  26. def setRoot(self, val):
  27. self.root = Node(val)
  28.  
  29. def insert(self, val):
  30. if (self.root is None):
  31. self.setRoot(val)
  32. else:
  33. self.insertNode(val)
  34.  
  35. def insertNode(self, val):
  36. curr = self.root
  37. while True:
  38. if val >= curr.val:
  39. if curr.right is None:
  40. curr.right = Node(val)
  41. else:
  42. curr = curr.right
  43. continue
  44. if val < curr.val:
  45. if curr.left is None:
  46. curr.left = Node(val)
  47. else:
  48. curr = curr.left
  49. continue
  50. break
  51.  
  52. def find(self, val):
  53. if self.root is None:
  54. return False
  55. curr = self.root
  56. while True:
  57. if val == curr.val:
  58. return True
  59. if val > curr.val:
  60. if curr.right is None:
  61. return False
  62. else:
  63. curr = curr.right
  64. continue
  65. if val < curr.val:
  66. if curr.left is None:
  67. return False
  68. else:
  69. curr = curr.left
  70. def turnleft(self, val):
  71. if self.root is None:
  72. return None
  73. curr = self.root
  74. if self.root.left is None and self.root.right is None:
  75. return None
  76. curr = self.root
  77. while True:
  78. if val == curr.val:
  79. break
  80. if val > curr.val:
  81. if curr.right is None:
  82. return False
  83. else:
  84. curr = curr.right
  85. continue
  86. if val < curr.val:
  87. if curr.left is None:
  88. return False
  89. else:
  90. curr = curr.left
  91. v1 = curr
  92. curr = curr.right
  93. v2 = curr.left
  94. curr.left = v1
  95. curr.left.right = v2
  96.  
  97.  
  98. def turnright(self, val):
  99. if self.root is None:
  100. return None
  101. curr = self.root
  102. if self.root.left is None and self.root.right is None:
  103. return None
  104. curr = self.root
  105. while True:
  106. if val == curr.val:
  107. break
  108. if val > curr.val:
  109. if curr.right is None:
  110. return False
  111. else:
  112. curr = curr.right
  113. continue
  114. if val < curr.val:
  115. if curr.left is None:
  116. return False
  117. else:
  118. curr = curr.left
  119. v1 = curr
  120. curr = curr.left
  121. v2 = curr.left
  122. curr.right = v1
  123. curr.right.left = v2
Add Comment
Please, Sign In to add comment