1  import java.util.Scanner;
  2  
  3  /**
  4     This program demonstrates a decision tree for an animal 
  5     guessing game.
  6  */
  7  public class DecisionTreeDemo
  8  {
  9     public static void main(String[] args)
 10     {
 11        BinaryTree questionTree = new BinaryTree("Is it a mammal?",
 12           new BinaryTree("Does it have stripes?",
 13              new BinaryTree("Is it a carnivore?",
 14                 new BinaryTree("It is a tiger."),
 15                 new BinaryTree("It is a zebra.")),
 16              new BinaryTree("It is a pig.")),
 17           new BinaryTree("Does it fly?",
 18              new BinaryTree("It is an eagle."),
 19              new BinaryTree("Does it swim?",
 20                 new BinaryTree("It is a penguin."),
 21                 new BinaryTree("It is an ostrich."))));
 22  
 23        boolean done = false;
 24        Scanner in = new Scanner(System.in);
 25        while (!done)
 26        {
 27           BinaryTree left = questionTree.left();
 28           BinaryTree right = questionTree.right();
 29           if (left.isEmpty() && right.isEmpty())
 30           {
 31              System.out.println(questionTree.data());
 32              done = true;
 33           }
 34           else
 35           {
 36              String response;
 37              do
 38              {
 39                 System.out.print(questionTree.data() + " (Y/N) ");
 40                 response = in.next().toUpperCase();
 41              } 
 42              while (!response.equals("Y") && !response.equals("N"));
 43  
 44              if (response.equals("Y"))
 45              {
 46                 questionTree = left;         
 47              }
 48              else
 49              {
 50                 questionTree = right;         
 51              }
 52           }
 53        }
 54     }
 55  }