diff --git a/BinarySearchTreeHR.py b/BinarySearchTreeHR.py new file mode 100644 index 0000000..0622963 --- /dev/null +++ b/BinarySearchTreeHR.py @@ -0,0 +1,80 @@ +""" +Task +The height of a binary search tree is the number of edges between the tree's root and its furthest leaf. You are given a pointer, , pointing to the root of a binary search tree. Complete the getHeight function provided in your editor so that it returns the height of the binary search tree. + +Input Format + +The locked stub code in your editor reads the following inputs and assembles them into a binary search tree: +The first line contains an integer, , denoting the number of nodes in the tree. +Each of the subsequent lines contains an integer, , denoting the value of an element that must be added to the BST. + +Output Format + +The locked stub code in your editor will print the integer returned by your getHeight function denoting the height of the BST. + +Sample Input + +7 +3 +5 +2 +1 +4 +6 +7 +Sample Output + +3 +Explanation + +The input forms the following BST: + +BST.png + +The longest root-to-leaf path is shown below: + +Longest RTL.png + +There are nodes in this path that are connected by edges, meaning our BST's . Thus, we print as our answer. + + +""" +# SOLUTION +class Node: + def __init__(self,data): + self.right=self.left=None + self.data = data +class Solution: + def insert(self,root,data): + if root==None: + return Node(data) + else: + if data<=root.data: + cur=self.insert(root.left,data) + root.left=cur + else: + cur=self.insert(root.right,data) + root.right=cur + return root + + def getHeight(self,root): + #Write your code here + if root == None : + return -1 + else : + leftHeight = myTree.getHeight(root.left) + rightHeight = myTree.getHeight(root.right) + if leftHeight > rightHeight : + return 1+leftHeight + else : + return 1+rightHeight + + +T=int(input()) +myTree=Solution() +root=None +for i in range(T): + data=int(input()) + root=myTree.insert(root,data) +height=myTree.getHeight(root) +print(height)