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.
Code:
#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
}