C++ Tutorial/template/Generic tree
Generic Tree
<source lang="cpp">#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);
}</source>