Extend your python program below to include the recursive methods, as described in part A , B ad C.
class BST:
def __init__(self,data):
self.root = data
self.left = None
self.right = None
def insert(self,data):
if self.root == None:
self.root = BST(data)
elif data > self.root:
if self.right == None:
self.right = BST(data)
else:
self.right.insert(data)
elif data < self.root:
if self.left == None:
self.left = BST(data)
else:
self.left.insert(data)
def inordertraversal(self):
if self.left != None:
self.left.inordertraversal()
print (self.root),
if self.right != None:
self.right.inordertraversal()
t = BST(9)
t.insert(8)
t.insert(3)
t.insert(6)
t.insert(12)
t.insert(10)
t.insert(11)
t.inordertraversal()
(a) numberOfNodes Accepts a BST node r and returns an integer value of the
number of nodes in the BST whose root is r.
(b) treeHeight Accepts a BST node r and returns and integer value of the height
of the BST whose root is r.
(c) numberOfLeaves Accepts a BST node r and returns an integer value of the
number of leaves in the BST whose root is r.
Comment: You may choose to submit pseudocode only for Question 9. Include it
along with your Part A. Each algorithm will require very few lines of code. Do not
use extra local (or global) variables, they are unnecessary. Think: if at the base
case, return base case solution” else return something involving a recursive call”.