Data Structures and Algorithms in Python
Miriam Antona
Software engineer

class TreeNode:
def __init__(self, data, left=None, right=None):
self.data = data
self.left_child = left
self.right_child = right
class BinarySearchTree:
def __init__(self):
self.root = None






def search(self, search_value):current_node = self.rootwhile current_node:if search_value == current_node.data:return Trueelif search_value < current_node.data:current_node = current_node.left_childelse:current_node = current_node.right_childreturn False
def insert(self, data):new_node = TreeNode(data)if self.root == None:

def insert(self, data):
new_node = TreeNode(data)
if self.root == None:
self.root = new_node
return

def insert(self, data):
new_node = TreeNode(data)
if self.root == None:
self.root = new_node
return
else:

def insert(self, data): new_node = TreeNode(data) if self.root == None: self.root = new_node return else: current_node = self.rootwhile True:if data < current_node.data:if current_node.left_child == None:

def insert(self, data):
new_node = TreeNode(data)
if self.root == None:
self.root = new_node
return
else:
current_node = self.root
while True:
if data < current_node.data:
if current_node.left_child == None:
current_node.left_child = new_node
return

def insert(self, data):
new_node = TreeNode(data)
if self.root == None:
self.root = new_node
return
else:
current_node = self.root
while True:
if data < current_node.data:
if current_node.left_child == None:
current_node.left_child = new_node
return
else:

def insert(self, data):
new_node = TreeNode(data)
if self.root == None:
self.root = new_node
return
else:
current_node = self.root
while True:
if data < current_node.data:
if current_node.left_child == None:
current_node.left_child = new_node
return
else:
current_node = current_node.left_child

def insert(self, data): new_node = TreeNode(data) if self.root == None: self.root = new_node return else: current_node = self.root while True: if data < current_node.data: if current_node.left_child == None: current_node.left_child = new_node return else: current_node = current_node.left_child elif data > current_node.data:if current_node.right_child == None:

def insert(self, data):
new_node = TreeNode(data)
if self.root == None:
self.root = new_node
return
else:
current_node = self.root
while True:
if data < current_node.data:
if current_node.left_child == None:
current_node.left_child = new_node
return
else:
current_node = current_node.left_child
elif data > current_node.data:
if current_node.right_child == None:
current_node.right_child = new_node
return

def insert(self, data):
new_node = TreeNode(data)
if self.root == None:
self.root = new_node
return
else:
current_node = self.root
while True:
if data < current_node.data:
if current_node.left_child == None:
current_node.left_child = new_node
return
else:
current_node = current_node.left_child
elif data > current_node.data:
if current_node.right_child == None:
current_node.right_child = new_node
return
else:

def insert(self, data):
new_node = TreeNode(data)
if self.root == None:
self.root = new_node
return
else:
current_node = self.root
while True:
if data < current_node.data:
if current_node.left_child == None:
current_node.left_child = new_node
return
else:
current_node = current_node.left_child
elif data > current_node.data:
if current_node.right_child == None:
current_node.right_child = new_node
return
else:
current_node = current_node.right_child

def insert(self, data):
new_node = TreeNode(data)
if self.root == None:
self.root = new_node
return
else:
current_node = self.root
while True:
if data < current_node.data:
if current_node.left_child == None:
current_node.left_child = new_node
return
else:
current_node = current_node.left_child
elif data > current_node.data:
if current_node.right_child == None:
current_node.right_child = new_node
return
else:
current_node = current_node.right_child















Data Structures and Algorithms in Python