rendered paste bodytemplate <class T>class Tree{ T *_value; Tree<T> *_left; Tree<T> *_right; Tree<T> *_root; Tree(T *value); Tree(const Tree<T>&); Tree& operator=(const Tree&);public: Tree(); ~Tree(); T& getValue(); int getDepth(); template <class t> friend ostream& operator<<(ostream&, const Tree<t>&); Tree& operator+=(T*); class TreeIterator { Tree<T> *_prev; Tree<T> *_next; public: TreeIterator(Tree<T> *tree); bool hasNext(); T& next(); }; TreeIterator& getIterator() { TreeIterator *ti = new TreeIterator(this); return *ti; }};