I have created a binary tree guessing game that takes user input in a form of (y/n) until there are no leaves left. I'm stuck at the last part of the implementation. How can I have it so that when the user reaches the leaf that says "I give up what is it?" they are prompted to enter an animal and that new animal gets inserted into the Binary tree? Any help would be appreciated.
public static void main(String[] args){
// use indentation to more easily distinguish leaves
BinaryTree questionTree = new BinaryTree("Is it a mammal?",
//left Yes
new BinaryTree("Does it have stripes?",
//left Yes
new BinaryTree("Is it a carnivore?",
//left Yes
//end Left Tree
new BinaryTree("is it a tiger?",
//left
new BinaryTree("It is a tiger!"),
//right one up
new BinaryTree("I give up. what is it?")),
//Right two up
new BinaryTree("Is it a zebra?",
new BinaryTree("It is a zebra!"),
new BinaryTree("I give up what is it?"))),
//right three up
new BinaryTree("Is it a pig?",
new BinaryTree("It is a pig!"),
new BinaryTree("I give up what is it?"))),
//right four up
new BinaryTree("Does it fly?",
// left
new BinaryTree("Is it an eagle?",
//left
new BinaryTree("it is an eagle!"),
// left
new BinaryTree("I give up what is it?")),
//right
new BinaryTree("Does it swim?",
//left
new BinaryTree("Is it a penguin?",
//left
new BinaryTree("it is a penguin!"),
//left
new BinaryTree("I give up what is it?")),
//right
new BinaryTree("Is it an ostrich?",
//left
new BinaryTree("it is an ostrich!"),
new BinaryTree("I give up what is it?")))));
boolean done = false;
Scanner in = new Scanner(System.in);
while (!done){
BinaryTree left = questionTree.left();
BinaryTree right = questionTree.right();
if (left.isEmpty() && right.isEmpty()){
System.out.println(questionTree.data());
done = true;
}else{
String response;
do{
System.out.print(questionTree.data() + " (Y/N) ");
response = in.next().toUpperCase();
}while (!response.equals("Y") && !response.equals("N"));
if (response.equals("Y")){
questionTree = left;
}else{
questionTree = right;
}
}
}
}