/* * tree.cpp * * Created on: 27.11.2015 г. * Author: trifon */ #include using namespace std; #include "linked_list.cpp" template class Tree { private: T data; LinkedList> children; // !!! Tree t; // Tree* t; public: using I = LinkedListIterator>; Tree(T const& _data = T()) : data(_data) {} Tree& addChild(Tree const& c) { children.insertEnd(c); return *this; } T root() const { return data; } I subtrees() const { return children.begin(); } }; template ostream& operator<<(ostream& os, Tree const& t) { os << '('; for(typename Tree::I it = t.subtrees();it;++it) os << *it << ' '; return os << t.root() << ')'; }