home *** CD-ROM | disk | FTP | other *** search
- //----------------------------------------------------------
- // TREE.CPP -
- // (c) 1991 by Thole Groeneveld & toolbox -
- //----------------------------------------------------------
-
- #include "tree.h"
-
- void Tree::insert (Node* n, Node*& root)
- {
- if ( root == NULL )
- root = n;
- else if ( *n < *root )
- insert (n, root -> left);
- else if ( *n > *root )
- insert (n, root -> right);
- else root -> equal (n);
- }
-
- int Tree::remove (Node& n, Node*& root) {
- if ( root == NULL )
- return NULL;
- else if ( n < *root )
- return remove (n, root -> left);
- else if ( n > *root )
- return remove (n, root -> right);
- else {
- Node *tmp = root;
- if ( root -> left == NULL )
- root = root -> right;
- else if ( root -> right == NULL )
- root = root -> left;
- else {
- Node *tmp2 = root -> left;
- while ( tmp2 -> right != NULL )
- tmp2 = tmp2 -> right;
- tmp2 -> right = root -> right;
- root = root -> left;
- }
- delete tmp;
- return 1;
- }
- }
-
- void Tree::walk (Node *n) {
- if ( n != NULL ) {
- walk (n -> left);
- n -> action();
- walk (n -> right);
- }
- }
-
- void Tree::destroy (Node *n) {
- if ( n != NULL ) {
- destroy (n -> left);
- destroy (n -> right);
- delete n;
- }
- }
-
- Node *Tree::search (Node& n) {
- Node *tmp = Root;
- while ( tmp != NULL ) {
- if ( n < *tmp )
- tmp = tmp -> left;
- else if ( n > *tmp )
- tmp = tmp -> right;
- else // gefunden
- break;
- }
- return tmp;
- }
- //----------------------------------------------------------
- // Ende von TREE.CPP -
-