Python  detailed recursive solution for beginners .(Using height with proper comments)
\nclass Solution:\n    def isBalanced(self, root: Optional[TreeNode]) -> bool:\n\t#if the root is none, tree is balanced. So return True.\n        if root is No
```\nclass Solution:\n    def isBalanced(self, root: Optional[TreeNode]) -> bool:\n\t#if the root is none, tree is balanced. So return True.\n        if root is None:\n            return True\n\t\t#For a tree to be balanced, at any given node , the height difference between left and right subtrees\n\t\t#should not be more than 1\n\t\t#So the easiest solution for this can be to find the height of left and right subtrees\n\t\t#Remember height has to balanced at each subtree \n\t\t\n\t\t#we create a height function to calculate height of left and right subtree\n\t\t#store the heights of left subtree and right subtree \t\n        lefth=self.height(root.left)\n        righth=self.height(root.right)\n\t\t\n\t\t#check if the difference between left subtree and right subtree is greater than 1, return False\n        if lefth-righth>1 or righth-lefth>1:\n            return False\n\t\t\t\n\t\t#A tree is balanced if the left and the right subtrees are balanced \n\t\t#So recursively check at each node if its left and right child are balanced\n        leftbal=self.isBalanced(root.left)\n        rightbal=self.isBalanced(root.right)\n\t\t\n\t\tif left and right are balanced, return True else return false\n        if leftbal and rightbal:\n            return True\n        else:\n            return False\n        \n\t\t#function to find height of a tree\n    def height(self,root):\n        if root is None:\n            return 0\n        else:\n            return 1+max(self.height(root.left),self.height(root.right))\n        \n```\n\n**Feel free to comment improved solutions or any doubts.**
['Recursion', 'Binary Tree', 'Python']