어느 추운 겨울에 호랑이가 숲 속을 다녔어요 is fine. It's using the soft, polite style prose which is common for children's books (adult books use the -다 ending though).
없은니? in the second sentence is wrong. It should be 없니? if you want the -니? question ending. But the overall description gives the impression that the tiger is talking to himself, i.e. wondering out loud. if so, you would use -나? or -ㄹ까? which is for that. 없니? is for asking someone, and it sounds strange because there is only one character.
Speech style involves politeness, formality, and showing respect - it is more than just formal versus informal.
There is a set of sentence endings to express politeness/formality, and there are "honorific" verb forms which express respect.
The sentence endings change the register of the speech to the person you're talking to.
Here's a summary of the four distinct styles, based on present tense 가다(verb) and 슬프다(adj) example.
1. -ㅂ니다: 갑니다, 슬픕니다. (polite and formal when used in writing, talking to a group, in broadcasting, etc)
2. -다: 간다, 슬프다. (impersonal in writings, familiar in speech)
3. -아/어요: 가요, 슬퍼요. (polite - the most common speech form between adults)
4. -아/어: 가, 슬퍼. (familiar - between close friends, or when talking to children)
(New learners can get by with the polite style of #3 for all situations.)
An honorific form of a verb shows respect to the subject of the verb, i.e. the person mentioned in the sentence, which is not necessarily the same as the listener.
1. 영철아, 선생님이 못 오신대 (= 못 오신다고 해) = 영철, they say the teacher can't come.
2. 선생님, 빨리 오세요. = Teacher, please come quick.
In #1, the ending is in familiar form (#4 above) as the speaker is talking to their friend, but it's using the honorific form 오시다 instead of plain 오다 because they want to be respectful to the teacher being mentioned.
In #2, the speaker is talking to the teacher, so they're using the polite ending -아/어요 as well as the honorific form 오시다 (오시다 + -아/어요 -> 오시어요 -> 오세요).