bool isBalancedUtil(TreeNode* root) { if (!root) return true; int left = getHeight(root->left); int right = getHeight(root->right); if (abs(left-right) <=1 && isBalancedUtil(root->left) && isBalancedUtil(root->right)) return true; return false; }
int isBalancedUtil(TreeNode *node, bool &bal){ if(!node)return 0; if(!bal)return -1; if(!node->left && !node->right)return 1; int left = isBalancedUtil(node->left, bal); int right = isBalancedUtil(node->right, bal); if(abs(left-right)>1){ bal = false; return -1; } return max(left, right)+1; }
bool isBalanced(TreeNode *root) { return isBalancedUtil(root); }
bool isBalanced(TreeNode *root) { bool bal = true; isBalancedUtil(root, bal); return bal; }