In: Computer Science
Python question
Your code can make use of any of the BinarySearchTree ADT methods: BinarySearchTree(), insert_left(), insert_right(), get_left(), get_right(), set_left(), set_right(),get_data(), set_data(), search(), __contains__ and insert().
Define a function called create_bst_from_list(values) which takes a list of values as a parameter. The function should create a binary search tree by using the insert() method.
Note: You can assume that the BinarySearchTree class is given and the parameter list is not empty.
For example:
| Test | Result |
|---|---|
tree = create_bst_from_list([7, 12, 4, 9, 20]) print_tree(tree, 0) |
7 (L) 4 (R) 12 (L) 9 (R) 20 |
tree = create_bst_from_list([8, 3, 1, 6, 4, 25, 78]) print_tree(tree, 0) |
8 (L) 3 (L) 1 (R) 6 (L) 4 (R) 25 (R) 78 |
class BinarySearchTree:
def __init__(self, data, left=None, right=None):
self.__data = data
self.__left = left
self.__right = right
def insert_left(self, new_data):
if self.__left == None:
self.__left = BinarySearchTree(new_data)
else:
tree = BinarySearchTree(new_data, left=self.__left)
self.__left = tree
def insert_right(self, new_data):
if self.__right == None:
self.__right = BinarySearchTree(new_data)
else:
tree = BinarySearchTree(new_data, right=self.__right)
self.__right = tree
def get_left(self):
return self.__left
def get_right(self):
return self.__right
def set_left(self, left):
self.__left = left
def set_right(self, right):
self.__right = right
def set_data(self, data):
self.__data = data
def get_data(self):
return self.__data
I need answers soon. Please!
Here is the code,
class BinarySearchTree:
def __init__(self, data, left=None, right=None):
self.__data = data
self.__left = left
self.__right = right
def insert_left(self, new_data):
if self.__left == None:
self.__left = BinarySearchTree(new_data)
else:
tree = BinarySearchTree(new_data, left=self.__left)
self.__left = tree
def insert_right(self, new_data):
if self.__right == None:
self.__right = BinarySearchTree(new_data)
else:
tree = BinarySearchTree(new_data, right=self.__right)
self.__right = tree
def get_left(self):
return self.__left
def get_right(self):
return self.__right
def set_left(self, left):
self.__left = left
def set_right(self, right):
self.__right = right
def set_data(self, data):
self.__data = data
def get_data(self):
return self.__data
def insertNode(self, currentNode, val):
if(val <= currentNode.__data):
if(currentNode.__left):
self.insertNode(currentNode.__left, val)
else:
currentNode.__left = BinarySearchTree(val)
elif(val > currentNode.__data):
if(currentNode.__right):
self.insertNode(currentNode.__right, val)
else:
currentNode.__right = BinarySearchTree(val)
def printLevelOrder(self):
if self is None:
return
queue = []
queue.append(self)
levelNumber = 0
while(len(queue) > 0):
level = ""
for i in range(0, len(queue)):
node = queue.pop(0)
if node is None:
level = level + "X "
continue
level = level + str(node.__data) + " "
queue.append(node.__left)
queue.append(node.__right)
print("Level ",levelNumber," : ",level)
level = ""
levelNumber += 1
def create_bst_from_list(values):
tree = None
for val in values:
if tree is None:
tree = BinarySearchTree(val)
else:
tree.insertNode(tree, val)
return tree
if __name__ == "__main__":
values = [8, 3, 1, 6, 4, 25, 78]
tree = create_bst_from_list(values)
tree.printLevelOrder()
OUTPUT:
X -> means empty space

This is how the tree would look like on paper:

If you have any doubts then put in the comments. Also, do upvote the solution.