I'm not sure why the OP felt compelled to create tens million child nodes; perhaps it was a stress test?

Here's a way to do it, but mitigating the need to call delete to free memory.
#include <boost/shared_ptr.hpp>
#include <vector>

class Node;
typedef boost::shared_ptr<Node> NodePtr;

struct Node
   std::vector<NodePtr> childs;

int main()
   const int N = 1000;  // I want the program to end in my lifetime; I could not wait for 10 million allocations.

   NodePtr nodd(new Node);

   for (int i = 0; i < N; ++i)
      nodd->childs.push_back(NodePtr(new Node));

   // all memory will be auto de-allocated when program exits