Inserting user input into a new node within a binary tree guessing game

Viewed 59

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;         
            }
         }
      }
  
 
}
0 Answers
Related