Вы можете добавить конструктор и деструктор в вашу Node
struct:
struct Node {
Node *nodes[MAX];
Node()
{
for (int i = 0; i < MAX; i++)
nodes[i] = 0;
}
~Node()
{
for (int i = 0; i < MAX; i++)
delete nodes[i];
}
private:
// disable copies/assignments
Node(const Node&);
Node& operator=(const Node&);
};
Так что теперь вам просто нужно удалить корневой узел, и все дочерние элементы будут рекурсивно удалены одновременно.Обратите внимание, что конструктор предназначен для обнуления массива.Вы не хотите в конечном итоге вызывать удаление в неинициализированной памяти!Также обратите внимание, что вызов delete для NULL является допустимой операцией, которая ничего не делает (если вы используете стандартный распределитель).
РЕДАКТИРОВАТЬ: даже если вы говорите в комментариях, что вам все равно, это может быть хорошоИдея отключить копии и присваивания в вашей структуре, как я сделал выше.Это не позволит вам выстрелить себе в ногу и дважды удалить одну и ту же память.