// GenericTreapNode class header #ifndef GENERICTREAPNODE_H #define GENERICTREAPNODE_H template class Treap; template class TreapNode { public: // constructor TreapNode(T key, int priority, TreapNode* left = 0, TreapNode* right = 0); // Getters const T& get_key() const; int get_priority() const; const TreapNode* get_left() const; const TreapNode* get_right() const; private: T key_; int priority_; TreapNode* left_; TreapNode* right_; friend class Treap; }; // IMPLEMENTATION template TreapNode::TreapNode(T key, int priority, TreapNode* left, TreapNode* right) : key_(key), priority_ (priority), left_(left), right_(right) {} template const T& TreapNode::get_key() const { return key_; } template int TreapNode::get_priority() const { return priority_; } template const TreapNode* TreapNode::get_left() const { return left_; } template const TreapNode* TreapNode::get_right() const { return right_; } #endif