10.3.   :                     287

     void*.     -
   , ,  ,   void*.

  gentree2.h

//   

typedef void* p_gen;   //  
int comp(p_gen a, P_gen b) ;

class bnode {          //
private:

friend class gen_tree;

bnode* left;

bnode* right;

p_gen   data;

int   count;

bnode(p_gen d, bnode* 1, bnode* r) :

data(d), left(l), right(r), count(1) {}

friend void print(bnode* n) ;

};

class gen_tree {       //
public:

gen_tree () { root =0; }

void insert(p_gen d) ;

P_gen find(p_gen d) const { return (find(root, d)); }

void print() const { print(root); }
protected:

bnode* root;        //

P_gen find(bnode* r, p_gen d) const;

void print(bnode* r) const;

\ .

         data  -
 count,     . 
data       .  
    ,      
  ,      .     -
 ,     .  
   (),    bnode   
    .

 insert ()    ;      -
   .

void gen_tree::insert(p_gen d)
(

bnode* temp = root;

bnode* old;

//template<class T> void gen_tree<T>::insert(T d)
}