Функция добавления дочернего узла в дерево C++
Имеется Generic Tree, нужно написать функцию, добавляющую дочерний узел к указанному узлу (по ключу).
Структура узла (не ругайте за id и level, в задании они действительно нужны)
struct Node
{
int key = 0; //ключ
int id = 0; //индекс
int level = 0; //уровень в иерархии
Node* parent = nullptr; //указатель на родителя
Node** son = nullptr; //массив указателей на сыновей
int count_son = 0; //количество сыновей
};
Есть функция, которая добавляет дочернюю вершину, но работает она только с той вершиной, дети у которой есть. Ошибка: [found->son == nullptr]
Node* nodeAdd(Node* node, int key, int keykey)
{
auto found = Find(node, key); // функция поиска вершины по ключу, работает идеально
Node* NewNode = new Node;
if (found->count_son > 0) found->son[found->count_son] = NewNode;
NewNode->parent = found;
NewNode->son = NULL;
NewNode->key = keykey;
NewNode->level = NewNode->parent->level + 1;
NewNode->id = found->son[found->count_son-1]->id+1;
found->count_son++;
return NewNode;
}
Как адаптировать функцию для вершины, не имеющей потомков?