// bottom up approach int dfsHeight(TreeNode* root){ if(!root) return 0; int leftHeight = dfsHeight(root->left); int rightHeight = dfsHeight(root->right); if(leftHeight < 0 || rightHeight < 0 || abs(leftHeight - rightHeight) > 1) return -1; else return max(leftHeight, rightHeight) + 1; }
//dfs approach, bottom up int dfsHeight(TreeNode* root){ if(!root) return 0; int left = dfsHeight(root->left); if(left==-1) return -1; int right = dfsHeight(root->right); if(right==-1) return -1; if(abs(left-right)>1) return -1; return max(left,right)+1; }
int dfsHeight(TreeNode *cur){ if(cur == NULL){return 0;} int left = dfsHeight(cur -> left); if(left == -1){return -1;} int right = dfsHeight(cur -> right); if(right == -1){return -1;} if(abs(left - right) > 1){return -1;} return max(left, right) + 1; }
bool isBalanced(TreeNode *root) { return dfsHeight (root) != -1; }