Tree Template Class Implementation for C++
Do not get in the habit of using using namespace std.
Since you're using &lt;cstddef&gt; for size_t, you should make it std::size_t for C++.
Since you define your own destructor, you should also overload the copy constructor and the assignment operator.  This is known as The Rule of Three in C++.  This is especially important in the case of raw pointers as data members as the compiler-provided copy constructor and assignment operator will only copy the pointer (shallow copy), not the data (deep copy).

You should also follow Dieter's advice (in the comments): use T data instead of T* data, and remove thenew/delete.  Use as little manual memory allocation as possible in C++.
You're using a range-based for-loop in the destructor, which must mean you're using C++11.  Bearing this in mind, one change you should make is using nullptr instead of NULL.