
def getHeight(currNode):
if currNode is None:
return -1
leftHeight = getHeight(currNode.left)
rightHeight = getHeight(currNode.right)
return max(leftHeight, rightHeight) + 1
def heightBalancedBinaryTree(tree):
#TODO: recursively check the balance of all nodes in the tree
#guard closure
if tree is None:
return True
if abs(getHeight(tree.left) - getHeight(tree.right)) <= 1 and heightBalancedBinaryTree(tree.right) and heightBalancedBinaryTree(tree.left) :
return True
return False