Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.57 KB | None | 0 0
  1. class BinarySearchTree(object):
  2.     def __init__(self, value):
  3.         """
  4.         Inicializa un ABB sin subárboles, sólo la raíz
  5.         """
  6.         self.value = value
  7.         self.left = self.right = None
  8.  
  9.     def add(self, value):
  10.         """
  11.         Agrega un nodo al ABB
  12.         """
  13.         if value <= self.value:
  14.             if self.left:
  15.                 self.left.add(value)
  16.             else:
  17.                 self.left = BinarySearchTree(value)
  18.         else:
  19.             if self.right:
  20.                 self.right.add(value)
  21.             else:
  22.                 self.right = BinarySearchTree(value)
  23.  
  24.     def inorder(self):
  25.         """
  26.         Recorre el árbol de manera (left, root, right)
  27.         """
  28.         values = []
  29.         if self.left:
  30.             values.extend(self.left.inorder())
  31.         values.append(self.value)
  32.         if self.right:
  33.             values.extend(self.right.inorder())
  34.         return values
  35.  
  36.     def inorder_interval(self, a, b):
  37.         """
  38.         Recorre el árbol de manera (left, root, right) restringido a `a` y `b`
  39.         """
  40.         values = []
  41.         if a < self.value and self.left:
  42.             values.extend(self.left.inorder_interval(a, b))
  43.         if a <= self.value <= b:
  44.             values.append(self.value)
  45.         if b > self.value and self.right:
  46.             values.extend(self.right.inorder_interval(a, b))
  47.         return values
  48.            
  49. tree = BinarySearchTree(45)
  50. tree.add(39)
  51. tree.add(56)
  52. tree.add(12)
  53. tree.add(10)
  54. tree.add(34)
  55. tree.add(32)
  56. tree.add(78)
  57. tree.add(54)
  58. tree.add(67)
  59. tree.add(89)
  60. print(tree.inorder())
  61. print(tree.inorder_interval(54, 67))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement