What's wrong in this code

pair<int,bool> isHeightBalancedOptimised(node *root)
{
// Write your code here
pair<int,bool> p;
if(root==NULL)
{
p.first=0;
p.second=false;
return p;
}
pair<int,bool> leftt=isHeightBalancedOptimised(root->left);
pair<int,bool> rightt=isHeightBalancedOptimised(root->right);
p.first=max(leftt.first,rightt.first)+1;
if((abs(leftt.first-rightt.first)<=1) && leftt.second && rightt.second)
p.second=true;
else
p.second=false;
return p;
}

hello @Mihir163
In ur base case p.second should be true becuase NULL tree can be considered as a balanced tree.