Как задать н-арное дерево?
Есть задание связанное с н-арным деревом. Но пока я остановился на том, что не могу нормально описать н-арное дерево. Моя логика состоит в том, что есть 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;
}