This part jumps out at me:
int AVLTree::GetDifference(Node *node)
{
int left = CheckHeight(node);
int right = CheckHeight(node);
int balance = left - right;
return balance;
}
This will always result in left == right
and therefore left - right == 0
.
You forgot to pass in the children:
// You might want this too: if (!node) return 0;
int left = CheckHeight(node->GetLeft());
int right = CheckHeight(node->GetRight());
int balance = left - right;
return balance;