Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Node:
- def __init__(self, data, offset=0, subTotal=0, lazySubTotal=0):
- self.data = data
- self.offset, self.subTotal, self.lazySubTotal = offset, subTotal, lazySubTotal
- self.left = self.right = self.parent = None
- class Vaccines:
- def __init__(self, lst: list) -> None:
- size = len(lst)
- self.root = Vaccines.insert_level_order(range(1, size), None, 0, size)
- for _ in lst:
- pass # TODO: Implement array of non zeroes init
- @staticmethod
- def insert_level_order(lst, root, i, n):
- if i < n:
- temp = Node(lst[i])
- root = temp
- # Left
- root.left = Vaccines.insert_level_order(lst, root.left,
- 2 * i + 1, n)
- if root.left:
- root.left.parent = root
- # Right
- root.right = Vaccines.insert_level_order(lst, root.right,
- 2 * i + 2, n)
- if root.right:
- root.right.parent = root
- return root
- def in_order(self):
- self._in_order(self.root)
- def _in_order(self, root):
- if root.left:
- Vaccines.in_order(root.left)
- print(root.left.data, end=" ")
- print(root.data, end=" ")
- if root.right:
- Vaccines.in_order(root.right)
- print(root.right.data, end=" ")
- def add(self, i,j, x):
- assert i <= j, f"i ({i}) must be smaller from j ({j})"
- # Left bound
- # Right bound
- pass
- def find(self, i):
- pass
- if __name__ == '__main__':
- lst = list(range(1, 31))
- n = len(lst)
- root = None
- tree = Vaccines.insert_level_order(lst, root, 0, n)
- tree.in_order()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement