#ifndef _AVL_H_ #define _AVL_H_ #include #include template class AVL { private: struct node { T info; struct node *left; struct node *right; }; public: AVL( ); void Insert( T x ); void InOrder( void ); private: void InOrderHelper( node *runner ); node *root; }; template AVL::AVL( ) { root = NULL; } template void AVL::Insert( T x ) { node *temp; temp = new node; temp->info = x; temp->left = NULL; temp->right = NULL; if( root == NULL ) root = temp; else { node *runner; node *trail; runner = root; while( runner != NULL ) { trail = runner; if( x <= runner->info ) runner = runner->left; else runner = runner->right; } if( x <= trail->info ) trail->left = temp; else trail->right = temp; } } template void AVL::InOrder( void ) { InOrderHelper( root ); } template void AVL::InOrderHelper( node *runner ) { if( runner != NULL ) { InOrderHelper( runner->left ); cout << runner->info << " "; InOrderHelper( runner->right ); } } #endif