-
Notifications
You must be signed in to change notification settings - Fork 0
/
Binary_Search_Tree.py
31 lines (26 loc) · 1.24 KB
/
Binary_Search_Tree.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#Binary Search Tree
#Binary search tree (BST) is a binary tree where the value of each node is larger or equal to the values in all the nodes in that node's left subtree and is smaller than the values in all the nodes in that node's right subtree.
#Write a function that, efficiently with respect to time used, checks if a given binary search tree contains a given value.
#For example, for the following tree:
# -n1 (Value: 1, Left: null, Right: null)
# -n2 (Value: 2, Left: n1, Right: n3)
# -n3 (Value: 3, Left: null, Right: null)
#Call to contains(n2, 3) should return True since a tree with root at n2 contains number 3.
#
import collections
Node = collections.namedtuple('Node', ['left', 'right', 'value'])
def contains(root, value):
if(root.value == value):
return True
elif(root.value > value):
if(root.left == None):
return False
return contains(root.left, value)
elif(root.value < value):
if(root.right == None):
return False
return contains(root.right, value)
n1 = Node(value=1, left=None, right=None)
n3 = Node(value=3, left=None, right=None)
n2 = Node(value=2, left=n1, right=n3)
print(contains(n2, 3))