Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class BinarySearchTree(object):
- def __init__(self, value):
- """
- Inicializa un ABB sin subárboles, sólo la raíz
- """
- self.value = value
- self.left = self.right = None
- def add(self, value):
- """
- Agrega un nodo al ABB
- """
- if value <= self.value:
- if self.left:
- self.left.add(value)
- else:
- self.left = BinarySearchTree(value)
- else:
- if self.right:
- self.right.add(value)
- else:
- self.right = BinarySearchTree(value)
- def inorder(self):
- """
- Recorre el árbol de manera (left, root, right)
- """
- values = []
- if self.left:
- values.extend(self.left.inorder())
- values.append(self.value)
- if self.right:
- values.extend(self.right.inorder())
- return values
- def inorder_interval(self, a, b):
- """
- Recorre el árbol de manera (left, root, right) restringido a `a` y `b`
- """
- values = []
- if a < self.value and self.left:
- values.extend(self.left.inorder_interval(a, b))
- if a <= self.value <= b:
- values.append(self.value)
- if b > self.value and self.right:
- values.extend(self.right.inorder_interval(a, b))
- return values
- tree = BinarySearchTree(45)
- tree.add(39)
- tree.add(56)
- tree.add(12)
- tree.add(10)
- tree.add(34)
- tree.add(32)
- tree.add(78)
- tree.add(54)
- tree.add(67)
- tree.add(89)
- print(tree.inorder())
- print(tree.inorder_interval(54, 67))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement