```
bool isBalanced(TreeNode *root){
bool flag = true;
depth(root, flag);
return flag;
}
int depth(TreeNode *root, bool &flag){
if(!flag || (NULL == root)) return 0;
int lh = depth(root->left, flag);
if(!flag) return 0;
int rh = depth(root->right, flag);
if(!flag) return 0;
flag = abs(lh-rh) <= 1;
return max(lh, rh) + 1;
}
```