class Node:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
def balancedBST(node):
if node is None:
return 100000,-100000,True
left_min, left_max, left_tree = balancedBST(node.left)
right_min,right_max, right_tree = balancedBST(node.right)
minimum = min(left_min, right_min, node.data)
maximum = max(right_min, right_max, node.data)
flag = True
if node.data <= left_max or node.left > right_min:
flag = False
if not(left_tree) or not(right_tree):
flag = False
return minimum, maximum, flag
#driver code
root = Node(10)
root.left = Node(5)
root.right = Node(15)
root.right.left = Node(12)
root.right.right = Node(18)