class BST:
class _Node:
def __init__(self,e):
self.e=e
self.left=None
self.right=None
def __init__(self):
self._root=None
self._size=0
def size(self):
return self._size
def is_empty(self):
return self._size==0
def add(self,e):
self._root=self._add(self._root,e)
def _add(self,node,e):
if not node:
node=self._Node(e)
self._size+=1
return node
if node.e==e:
return node
elif node.e>e:
node.left=self._add(node.left,e)
else:
node.right=self._add(node.right,e)
return node
def contains(self,e):
return self._contains(self._root,e)
def _contains(Self,node,e):
if not node:
return False
if node.e==e:
return True
if node.e>e:
self._contains(node.left,e)
if node.ee:
node.left=self._remove(node.left,e)
elif node.e