/*
   Program ten stanowi demonstracje drzewa decyzyjnego zgadywanki
   nazwy zwierzęcia.
*/

#include <iostream>
#include <string>
#include "binary_tree.h"

using namespace std;

int main()
{
   BinaryTree question_tree(
      BinaryTree("Czy to ssak?",
         BinaryTree("Czy ma paski?",
            BinaryTree("Czy to drapieżnik?",
               BinaryTree("To tygrys."),
               BinaryTree("To zebra.")),
            BinaryTree("To świnia.")),
      BinaryTree("Czy to zwierze lata?",
         BinaryTree("To orzeł."),
         BinaryTree("Czy to zwierze pływa?",
            BinaryTree("To pingwin."),
            BinaryTree("To struś.")))));

   bool done = false;
   
   while (!done)
   {
      BinaryTree left = question_tree.left();
      BinaryTree right = question_tree.right();
      if (left.empty() && right.empty())
      {
         cout << question_tree.data() << endl;
         done = true;
      }
      else
      {
         string response;
         do
         {
            cout << question_tree.data() << " (t/n): ";
            cin >> response;
         } 
         while (response != "t" && response != "n");

         if (response == "t")
         {
            question_tree = left;         
         }
         else
         {
            question_tree = right;         
         }         
      }
   }
}

