Answer:
see explaination
Step-by-step explanation:
Call to restore_bst():
prelist = [10, 5, 1, 7, 40, 50]
root = restore_bst(prelist)
Functiion implementation:
def restore_bst(prelist):
restore_bstUtil.preIndex = 0
size = len(prelist)
return restore_bstUtil(prelist, prelist[0], INT_MIN, INT_MAX, size)
def restore_bstUtil(prelist, key, min, max, size):
if (restore_bstUtil.preIndex >= size):
return None
root = None
if (key > min and key < max):
root = Node(key)
restore_bstUtil.preIndex = restore_bstUtil.preIndex + 1
if (restore_bstUtil.preIndex < size):
root.left = restore_bstUtil(prelist,
prelist[restore_bstUtil.preIndex], min, key, size)
root.right = restore_bstUtil(prelist,
prelist[restore_bstUtil.preIndex], key, max, size)
return root