Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Node(object):
- def __init__(self, value=None):
- self.high = None
- self.low = None
- self.value = value
- def __call__(self):
- return self.value
- root = Node(2)
- root.high = Node(5)
- root.low = Node(1)
- root.high.low = Node(3)
- def find_value_or_lower(value, node, closest=None):
- print node.__dict__
- if node() == value:
- return node()
- if node() < value:
- if not closest:
- closest=node()
- elif (value - closest) > (value - node()):
- closest=node()
- if node.high:
- return find_value_or_lower(value, node.high, closest)
- else:
- return closest
- if node() > value:
- if node.low:
- return find_value_or_lower(value, node.low, closest)
- else:
- return closest
- print find_value_or_lower(4, root)
- root = Node(8)
- root.high = Node(10)
- root.low = Node(3)
- root.high.high = Node(14)
- root.high.high.low = Node(13)
- root.low.low = Node(1)
- root.low.high = Node(6)
- root.low.high.low = Node(4)
- root.low.high.high = Node(7)
- print find_value_or_lower(7, root)
Advertisement
Add Comment
Please, Sign In to add comment