Как задать н-арное дерево?

Есть задание связанное с н-арным деревом. Но пока я остановился на том, что не могу нормально описать н-арное дерево. Моя логика состоит в том, что есть SIZE(определяет кол-во потомков), и когда создается корень, то программа пробегается в цикле SIZE раз и задает поля data для потомков. И задать корень с детьми вроде как получилось, но непонятно как мне провести ту же процедуру для каждого потомка, тк постоянно появляются ошибки. Прикладываю код и заранее благодарю.

class Node
{
private:
    int data;
    Node* child[SIZE];
public:
    Node* newNode(int data);
    void push(int inputData, Node** r);
    void printTree(Node* root);
};

Node* Node::newNode(int data)
{
    Node* tempNode = new Node;
    tempNode->data = data;
    return tempNode;
}

void Node::push(int inputData, Node** r)
{
    
    if ((*r) == NULL)
    {
        (*r) = new Node;
        (*r)->data = inputData;
        for (int i = 0; i < SIZE; ++i)
        {
            (*r)->child[i] = NULL;
        }
    }
    else
    {
        for (int i = 0; i < SIZE; ++i)
        {
            push(inputData, &r[i]);
        }
    }
}

Например, когда я хочу в ручную добавить элементы, при попытке добавить элемент 4 программа падает с ошибкой : stack overflow

    #include "NaryTree.h"

int main()
{
    Node* root = NULL;  
    root->push(3, &root);
    root->child[0]->push(2, root->child);
    root->child[1]->push(4, root->child);
    return 0;
}

Ответы (0 шт):