Store the tree as data and then your code can be really quite small. If we modify the answer given by @jam6549 a little we can come up with something like this:
var answer = [ {t: "Does it have fur?", y: 1, n: 2},
{t: "Is it a kitten?", y: 3, n: 4},
{t: "Is it a goldfish?", y: 5, n: 4},
{t: "Found a kitten", y: -1, n: -1},
{t: "I'm stumped", y: -1, n: -1},
{t: "Found a goldfish", y: -1, n: -1} ];
var state = 0;
while ( answer[state].y >= 0 ) {
var choice = confirm(answer[state].t);
state = choice? answer[state].y: answer[state].n;
}
alert(answer[state].t);
This only supports simple y/n answers so I could use confirm, you'll want to use an array with an entry for each possible answer.
You say some of the questions are repeated so I'd be tempted to have an array with each unique question text. Then your answer array stores an index into the question array to save duplicating text.