Skip to content
52 changes: 52 additions & 0 deletions data_structures/binary_tree/continuous_height.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import doctest

class Node(object):
def __init__(self, val : int) -> None:
self.data = val
self.left = None
self.right = None

class BST:
def __init__(self) -> None:
self.root = None

def create(self, value : int) -> None: #value is the element to be inserted to BST
if self.root == None:
self.root = node(value)
else:
current = self.root
while True:
if current.data > value:
if current.left != None:
current = current.left
else:
current.left = node(value)
break
elif current.data < value:
if current.right:
current = current.right
else:
current.right = node(value)
break
else:
break

def height_of_tree(root : Node) -> int:
if not root:
return -1
return 1 + max(height_of_tree(root.right), height_of_tree(root.left))

def bst_height() -> None:
t = int(input())
for i in range(t):
n = int(input())
ar = list(map(int, input().split()))
tree = BST()
for i in range(n):
tree.create(ar[i])
print(height_of_tree(tree.root), end =" ")
print()

if __name__ == "__main__":
doctest.testmod()
bst_height()