Guest User

Untitled

a guest
Dec 11th, 2011
310
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.11 KB | None | 0 0
  1. class Node(object):
  2.     def __init__(self, value=None):
  3.         self.high = None
  4.         self.low = None
  5.         self.value = value
  6.  
  7.     def __call__(self):
  8.         return self.value
  9.  
  10. root = Node(2)
  11. root.high = Node(5)
  12. root.low = Node(1)
  13. root.high.low = Node(3)
  14.  
  15. def find_value_or_lower(value, node, closest=None):
  16.     print node.__dict__
  17.     if node() == value:
  18.     return node()
  19.  
  20.     if node() < value:
  21.         if not closest:
  22.             closest=node()
  23.         elif (value - closest) > (value - node()):
  24.             closest=node()
  25.  
  26.         if node.high:
  27.             return find_value_or_lower(value, node.high, closest)
  28.     else:
  29.             return closest
  30.  
  31.     if node() > value:
  32.     if node.low:
  33.             return find_value_or_lower(value, node.low, closest)
  34.     else:
  35.             return closest
  36.  
  37. print find_value_or_lower(4, root)
  38.  
  39. root = Node(8)
  40. root.high = Node(10)
  41. root.low = Node(3)
  42. root.high.high = Node(14)
  43. root.high.high.low = Node(13)
  44. root.low.low = Node(1)
  45. root.low.high = Node(6)
  46. root.low.high.low = Node(4)
  47. root.low.high.high = Node(7)
  48.  
  49. print find_value_or_lower(7, root)
  50.  
  51.  
  52.  
  53.  
Advertisement
Add Comment
Please, Sign In to add comment