// file: dt_cstr_0.cc
//

// isip include files
//
#include "decision_tree.h"
#include "decision_tree_constants.h"

// method: destructor
//
// arguments: none
//
// return: none
//
// this is the default destructor
//
Decision_tree::~Decision_tree() {

  // local variables
  //  
  Link_node* node;
  Link_node* next;
 
  // free memory in the list of the leaf nodes
  //
  if (num_leaf_d > (int_4)0) {
    node = leaf_nodes_d->get_head_cc();
    for(next = node; next != (Link_node*)NULL; node = next) {
      next = next->get_next_cc();
      leaf_nodes_d->remove_cc(node);
    }
    delete leaf_nodes_d;
  }
  
  // delete the root node
  //
  if(root_d != (Dt_node*)NULL) {
    delete root_d;
    root_d = (Dt_node*)NULL;
  }

  if(cph_d != (char_1*)NULL) {
    delete [] cph_d;
    cph_d = (char_1*)NULL;
  }
 
  
  // reset the state position and number of leaves
  //
  state_pos_d = 0;
  num_leaf_d = 0;

  // exit gracefully
  //
}
