Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2020
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.69 KB | None | 0 0
  1.  
  2. class Node:
  3.     def __init__(self, value, left=None, right=None):
  4.         self.value = value
  5.         self.left = left
  6.         self.right = right
  7.  
  8. def stretch(root, stretch_amount):
  9.     return stretch_left(root, stretch_amount)
  10.  
  11.  
  12. def stretch_left(root, stretch_amount):
  13.     target_value = int(root.value / stretch_amount)
  14.     right = root.right
  15.     left = root.left
  16.  
  17.     root.value = target_value
  18.     root.right = None
  19.     root.left = None
  20.     prev = root
  21.  
  22.     for i in range(stretch_amount-1):
  23.         node = Node(target_value)
  24.         prev.left = node
  25.         prev = node
  26.  
  27.     prev.left = left
  28.     prev.right = right
  29.  
  30.     if prev.left:
  31.         prev.left = stretch_left(prev.left, stretch_amount)
  32.  
  33.     if prev.right:
  34.         prev.right = stretch_right(prev.right, stretch_amount)
  35.  
  36.     return root
  37.  
  38. def stretch_right(root, stretch_amount):
  39.     target_value = int(root.value / stretch_amount)
  40.     right = root.right
  41.     left = root.left
  42.  
  43.     root.value = target_value
  44.     root.right = None
  45.     root.left = None
  46.     prev = root
  47.  
  48.     for i in range(stretch_amount-1):
  49.         node = Node(target_value)
  50.         prev.right = node
  51.         prev = node
  52.  
  53.     prev.left = left
  54.     prev.right = right
  55.  
  56.     if prev.left:
  57.         prev.left = stretch_left(prev.left, stretch_amount)
  58.  
  59.     if prev.right:
  60.         prev.right = stretch_right(prev.right, stretch_amount)
  61.  
  62.     return root
  63.  
  64. def print_tree(root):
  65.     if root is None:
  66.         return
  67.  
  68.     print(root.value)
  69.     print('------')
  70.     print_tree(root.left)
  71.     print_tree(root.right)
  72.  
  73.  
  74. root = Node(12)
  75. eighty1 = Node(81)
  76. thirty4 = Node(34)
  77. fifty6 = Node(56)
  78. nineteen = Node(19)
  79. six = Node(6)
  80.  
  81. root.left = eighty1
  82. root.right = thirty4
  83. eighty1.right = fifty6
  84. thirty4.left = nineteen
  85. thirty4.right = six
  86.  
  87. # import ipdb
  88. # ipdb.set_trace()
  89.  
  90. new_tree = stretch(root, 3)
  91. print_tree(new_tree)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement