Advertisement
Guest User

Untitled

a guest
Apr 1st, 2020
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 KB | None | 0 0
  1. class Node:
  2. def __init__(self, value):
  3. self.value = value
  4. self.left = None
  5. self.right = None
  6.  
  7.  
  8. def build_avl(elements, i, j, height):
  9. if i > j:
  10. return None, height - 1
  11. mid = (i + j) // 2
  12. root = Node(elements[mid])
  13. root.left, height_left = build_avl(elements, i, mid - 1, height + 1)
  14. root.right, height_right = build_avl(elements, mid + 1, j, height + 1)
  15. if height_left > height_right:
  16. height = height_left
  17. else:
  18. height = height_right
  19. return root, height
  20.  
  21.  
  22. def print_pre_order(node):
  23. print(node.value)
  24. if node.left is not None:
  25. print_pre_order(node.left)
  26. if node.right is not None:
  27. print_pre_order(node.right)
  28.  
  29.  
  30. def rotate_right(node):
  31. p = node.left
  32. node.left = p.right
  33. p.right = node
  34. node = p
  35. return node
  36.  
  37. def build_backbone(root):
  38. node = root
  39. while node is not None:
  40. print_pre_order(node)
  41. print('--------')
  42. if node.left is not None:
  43. node = rotate_right(node)
  44. else:
  45. node = node.right
  46. return root
  47.  
  48.  
  49. def dsw(root, n):
  50. old_root = root
  51. new_root = old_root.right
  52. while new_root is not None:
  53. if new_root.left is None:
  54. old_root = new_root
  55. new_root = new_root.right
  56. else:
  57. tmp_node = new_root.left
  58. new_root.left = tmp_node.right
  59. tmp_node.right = new_root
  60. new_root = tmp_node
  61. old_root.right = tmp_node
  62.  
  63.  
  64. numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  65. print(numbers)
  66. tree_root, tree_height = build_avl(numbers, 0, len(numbers) - 1, 0)
  67. print("przed zbudowaniem kregoslupa:")
  68. print_pre_order(tree_root)
  69. print('--------')
  70. tree_root = build_backbone(tree_root)
  71. print("po zbudowaniu kregoslupa:")
  72. print_pre_order(tree_root)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement