Mega Code Archive

 
Categories / C++ Tutorial / Template
 

Generic Tree

#include <iostream> #include <string> using namespace std; template<typename T> class TreeNode { public:    TreeNode(const T& val) : val_(val), left_(NULL), right_(NULL) {}   ~TreeNode( ) {       delete left_;       delete right_;    }    const T& getVal( ) const {return(val_);}    void setVal(const T& val) {val_ = val;}    void addChild(TreeNode<T>* p) {       const T& other = p->getVal( );       if (other > val_)          if (right_)             right_->addChild(p);          else             right_ = p;       else          if (left_)             left_->addChild(p);          else             left_ = p;    }    const TreeNode<T>* getLeft( ) {return(left_);}    const TreeNode<T>* getRight( ) {return(right_);} private:    T val_;    TreeNode<T>* left_;    TreeNode<T>* right_; }; int main( ) {    TreeNode<string> node1("A");    TreeNode<string> node2("B");    TreeNode<string> node3("C");    node1.addChild(&node2);    node1.addChild(&node3); }