C++ Tutorial/template/Generic tree

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Generic Tree

<source lang="cpp">#include <iostream>

  1. 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);

}</source>