int check(struct TreeNode* Root)
{
    if(!Root) return 0;
    int left=check(Root->left);
    int right=check(Root->right);
    if(abs(left-right)>1||left==-1||right==-1) return -1;
    return (left>right?left:right)+1;
}

bool IsBalanced_Solution(struct TreeNode* pRoot ) {
    if(!pRoot) return true;
    if(check(pRoot)==-1) return false;
    return true;
}