Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class BinarySearchTree:
- def __init__(self, data):
- self.data = data
- self.left = None
- self.right = None
- def search(self, find_data):
- if self.data == find_data:
- return self
- elif find_data < self.data and self.left != None:
- return self.left.search(find_data)
- elif find_data > self.data and self.right != None:
- return self.right.search(find_data)
- else:
- return None
- def get_left(self):
- return self.left
- def get_right(self):
- return self.right
- def set_left(self, tree):
- self.left = tree
- def set_right(self, tree):
- self.right = tree
- def set_data(self, data):
- self.data = data
- def get_data(self):
- return self.data
- def sum_beneath(t, num):
- if not num:
- total = 0
- if t.get_left() or t.get_right():
- if t.get_left():
- total += sum_beneath(t.get_left(), None)
- if t.get_right():
- total += sum_beneath(t.get_right(), None)
- total += t.get_data()
- return total
- total = 0
- t = t.search(num)
- if not t:
- return 0
- if t.get_left():
- total += sum_beneath(t.get_left(), None)
- if t.get_right():
- total += sum_beneath(t.get_right(), None)
- return total
- t = BinarySearchTree(55)
- a = BinarySearchTree(24)
- b = BinarySearchTree(8)
- c = BinarySearchTree(51)
- d = BinarySearchTree(25)
- e = BinarySearchTree(72)
- f = BinarySearchTree(78)
- t.set_left(a)
- t.set_right(e)
- a.set_left(b)
- a.set_right(c)
- c.set_left(d)
- e.set_right(f)
- result = sum_beneath(t, 100)
- print('Sum beneath 100 =', result)
- result = sum_beneath(t, 72)
- print('Sum beneath 72 =', result)
- result = sum_beneath(t, 24)
- print('Sum beneath 24 =', result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement