Функция добавления дочернего узла в дерево 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;
}

Как адаптировать функцию для вершины, не имеющей потомков?


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