Easiest Solution Binary Tree
Intuition\n Describe your first thoughts on how to solve this problem. \n\n# Approach\n Describe your approach to solving the problem. \n\n# Complexity\n- Time 
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity:\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity:\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```\n# Definition for a binary tree node.\n# class TreeNode:\n#     def __init__(self, val=0, left=None, right=None):\n#         self.val = val\n#         self.left = left\n#         self.right = right\nclass Solution:\n    def isBalanced(self, root: Optional[TreeNode]) -> bool:\n        if root is None:\n            return True\n        \n        # Recursive function to get the height of a node\n        def get_height(node):\n            if node is None:\n                return 0\n            return max(get_height(node.left), get_height(node.right)) + 1\n        \n        left_height = get_height(root.left)\n        right_height = get_height(root.right)\n        height_diff = abs(left_height - right_height)\n        \n        left_balanced = self.isBalanced(root.left)\n        right_balanced = self.isBalanced(root.right)\n        \n        return height_diff <= 1 and left_balanced and right_balanced\n\n```
['Binary Search', 'Python3']