/* This file contains the declaration for class DecisionTree.

---------------------------------------------------------------*/

#include <iostream.h>
#include <fstream.h>

class DecisionTree
{
 protected:

  struct Node
  {
    enum {ArraySize = 80};

    char
      Buffer[ArraySize];

    Node
      *Yes,
      *No;

    Node(char *Question = 0,
      Node *Left = 0,
      Node *Right = 0);

    ~Node(void);
  };

  typedef Node *NodePtr;

  NodePtr
    Root;

  void BuildTree(istream& InF, NodePtr& NPtr);
  int DescendTree(NodePtr& NPtr);
  void LearnSomething(NodePtr& NPtr);
  void WriteTree(ostream& OutF, NodePtr NPtr);

public:

  DecisionTree(void);
  ~DecisionTree(void);

  int Load(char*);
  int Descend(void);
  int Write(char*);
};

