Язык С++ и программирование на нем. Рейзлин В.И. - 157 стр.

UptoLike

Составители: 

159
tree () { root = 0; } // Создание пустого дерева.
node *&find (node *&r, int key); // Поиск элемента в поддереве
// с вершиной r.
node *&find (int key) { // Поиск по всему дереву.
return ( find(root, key) );
}
void print () { print (root); } // Печать всего дерева.
};
int tree::insert (int key){ // Возвращает код.
node* t = root;
node* old;
int k;
if (root = = 0 ) { k = f( key );
root = new node( key, k, 0, 0 );
return k;
}
while (t !=0){
old = t;
if (t-> key = = key ){
return t->code; }
if ( t->key > key ) t = t->left;
else t = t->right; }
k = f (key);
if ( old->key > key) old->left = new node ( key, k, 0, 0);
else old->right = new node ( key, k, 0, 0);
return k; }
node *&tree::find ( node *&r, int key){ // Рекурсивная функция
if ( r = = 0) return r; // поиска в поддереве r.
if ( r->key = = key ) return r;
if ( r->key > key ) return ( find ( r->left, key ));
else
return ( find ( r->right, key ));
}
void del_el ( node *&r, node *q){ // Рекурсивная функция
if ( r->right = = 0 ) { // удаления элемента,
q->key = r->key; // на который указывает
q.