75 void delete_children_recursive()
79 left->delete_children_recursive();
85 right->delete_children_recursive();
127 root->delete_children_recursive();
136 return ( root ==
NULL );
142 return ( root ==
NULL ? 0 : root->sleft + root->sright + 1 );
178 nn =
new node(key,data);
180 throw std::bad_alloc();
184 nn = create_new_node(key, data, root);
200 rotate_backward(
item);
227 swap_with_father(
item->right );
233 swap_with_father(
item->left );
238 for (node* n =
item, *f = n->father; f !=
NULL; n = f, f = n->father)
276 node* create_new_node(
288 node*
nn =
new node(key,data);
298 node*
nn =
new node(key,data);
310 return create_new_node(key, data,
subproblem->left);
314 return create_new_node(key, data,
subproblem->right);
318 void swap_with_father(
357 n1->left-> father =
n1;
359 n1->right->father =
n1;
367 n1->father->left =
n1;
369 n1->father->right =
n1;
373 void rotate_backward(
381 if ( ! compare(
item->father->key,
item->key ) )
383 swap_with_father(
item );
384 rotate_backward(
item );