Easy JS Solution
\nvar isBalanced = function(root) {\n    let balanced = true;\n    \n    function findHeight(root) {\n        if (!root) return 0;\n        if (balanced === fal
```\nvar isBalanced = function(root) {\n    let balanced = true;\n    \n    function findHeight(root) {\n        if (!root) return 0;\n        if (balanced === false) return; // optimisation: early exit\n\n        let leftHeight = findHeight(root.left);\n        let rightHeight = findHeight(root.right);\n        let diff = Math.abs(leftHeight - rightHeight);\n\n        if (diff > 1) balanced = false;\n        \n        return Math.max(leftHeight, rightHeight) + 1;\n    }\n    \n    findHeight(root);\n    return balanced;\n    // Time Complexity: O(n), we possibly visit all nodes\n    // Space Complexity: O(H), call stack will possibly go as deep as height\n};\n```
['JavaScript']