template class AVLNode { public: AVLNode() { left = right = 0; } AVLNode(const T& el, AVLNode *l = 0, AVLNode *r = 0) { key = el; left = l; right = r; } T key; AVLNode *left, *right, *parent; int balance; }; template class AVLTree { private: AVLNode* root; void rightRotation(AVLNode* node) { AVLNode* left = node->left; AVLNode* parent = node->parent; left->parent = parent; node->left = left->right; node->left->parent = node; left->right = node; node->parent = left; if(parent->left == node) parent->left = left; else parent->right = left; } };