"I have no cats" is the same as "I don't have any cats", except it has stronger emphasis. Normally you'd just say the latter, but it's not uncommon to hear the former. You can interpret "no" to mean "zero", and can use this form in other ways (ex. "No cats are..." is the same as "All cats are not...")
When indicating possession, 'have' isn't a modal verb like it is when it's part of a perfect tense. "I have gone there" or "Have you done that" are perfectly correctly ( "I didn't have gone" and "Did you have done" are completely incorrect), but "I have not cats" sounds extremely awkward. It was correct in Shakespearean English (when all verbs could be treated as modal verbs), but now it's only used in poetic language.
So "don't have" is used for possession and "have not" is used with perfect tenses.