typedef struct TreeNode Node;
bool judge(Node *node, int *depth){
int left = 1;
int right = 1;
int max;int min;
bool ret = true;
if(!node) return true;
ret &= judge(node->right, &right);
if(!ret) return ret;
ret &= judge(node->left, &left);
if(!ret) return ret;
max = left >= right ? left: right;
min = left <= right ? left:right;
//printf("left:%d, right:%d\n", left, right);
//printf("");
if(max-min > 1) return false;
*depth += max;
return true;
}
bool isBalanced(struct TreeNode* root){
int d = 0;
if(!root) return true;
return judge(root, &d);
}