/** 
* @file DecisionTreeBuilder.h
* @brief build decision trees
* @author Erik Rodner
* @date 05/06/2008

*/
#ifndef DECISIONTREEBUILDERINCLUDE
#define DECISIONTREEBUILDERINCLUDE

#include <map>
#include <set>

#include "core/basics/triplet.h"
#include "vislearning/cbaselib/FeaturePool.h"
#include "vislearning/cbaselib/CachedExample.h"

#include "core/vector/VectorT.h"
#include "core/vector/MatrixT.h"

#include "DecisionNode.h"
#include "DecisionTree.h"

// value classno example_index 


namespace OBJREC {

/** build decision trees */
class DecisionTreeBuilder
{

    protected:

    public:
  
	/** simple constructor */
	DecisionTreeBuilder();
      
	/** simple destructor */
	virtual ~DecisionTreeBuilder();
     
	virtual DecisionNode *build ( const FeaturePool & fp, 
		     const Examples & examples, int maxClassNo ) = 0;

	void build ( DecisionTree & tree, const FeaturePool & fp,
		const Examples & examples, int maxClassNo );

};


} // namespace

#endif
