258                      9. ,    STL

template <class T>

 gen_tree<T>::find(bnode<T>* ,  d) const

{

if (r == 0)
return 0 ;

else if (comp(r -> data, d) == 0)
return (r -> data) ;

else if (comp(r -> data, d) > 0)
return (find( r -> left, d) ) ;

else

return (findf r -> right, d)) ;

}

template <class T>

void gen_tree<T>::print(bnode<T> *r) const

{

if (r != 0) (

print ( r -> left);

r -> bnode<T>::print ();

print ( r -> right);

}

}

       ,  
   .    ,    -
  char*,      .

  gentreel.cpp

int main()
{

char dat[256];

gen_tree<char*> t;

char* p;

while (cindat) {

p = new char[strlen(dat) + 1] ;

strcpy(p, dat) ;

t.insert(p) ;

}

t.print() ;

cout  "EOF"  endl  endl;   // 

gen_tree<int> i_tree;

for (int i = 15; i > -5; --i)
i_tree.insert(i) ;

i_tree.print();