Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template<typename T>
- class AVLNode
- {
- public:
- AVLNode(T, AVLNode<T>*, AVLNode<T>*, int);
- ~AVLNode();
- void setLeft(AVLNode<T>*);
- AVLNode<T>* getLeft() const;
- void setRight(AVLNode<T>*);
- AVLNode<T>* getRight() const;
- void setHeight(int);
- void setKey(const T& );
- int getHeight() const;
- const T& getKey() const;
- private:
- T key;
- AVLNode<T> *left;
- AVLNode<T> *right;
- int height;
- };
- template<typename T>
- AVLNode<T>* AVLTree<T>::rotateRight(AVLNode<T> *node1)
- {
- AVLNode<T> *node2 = node1->getLeft();
- AVLNode<T> *T2 = node2->getRight();
- // Perform rotation
- node2->setRight(node1);
- node1->setLeft(T2);
- // Update heights
- node1->setHeight(max(height(node1->getLeft()), height(node1->getRight()))+1);
- node2->setHeight(max(height(node2->getLeft()), height(node2->getRight()))+1);
- // Return new root
- return node2;
- }
- template <typename T>
- class AVLNode
- {
- protected:
- T key;
- AVLNode<T>* left;
- AVLNode<T>* right;
- int height;
- public:
- AVLNode<T>* getRight() const { return right: }
- AVLNode<T>* getLeft() const { return left; }
- };
- template <typename T>
- class WritableAVLNode : public AVLNode<T>
- {
- public:
- void setRight(AVLNode<T>* right) { AVLNode<T>::right = right; }
- void setLeft(AVLNode<T>* left) { AVLNode<T>::left = left; }
- };
- template <typename T>
- class AVLNode
- {
- friend class AVLTree<T>;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement