Рандомная генерация дерева
Нужно сгенерировать небинарное дерево, которое задаётся лишь макс. числом узлов и дисперсией. (Степень дерева const = 4, => при указывании дисперсии = 2, у узлов может быть от 2 до 6 сыновей)
struct Node
{
int key = 0; //ключ
int id = 0; //индекс
int level = 0; //уровень в иерархии
Node* parent = nullptr; //указатель на родителя
Node** son = nullptr; //массив указателей на сыновей
int count_son = 0; //количество сыновей
};
Функция генерации дерева, при помощи рекурсии:
Node* createTree(Node* node, int id, int level, int dispersion)
{
node->id = id;
node->level = level;
node->count_son = rand() % (4-dispersion) + dispersion;
node->key = rand() % 100;
node->son = new Node * [node->count_son];
level++;
for (int i = 0; i < node->count_son; i++)
{
node->son[i] = new Node;
node->son[i]->parent = node;
node->son[i]->id = id + i;
node->son[i]->level = level;
}
for (int i = 0; i < node->count_son; i++)
createTree(node->son[i], id + i, level, dispersion);
return node;
}
В данный момент вроде как всё генерируется, но т.к. ограничения на создание нет, то компилироваться не может. Как можно ограничить максимальное число узлов?