Вставка treeNodes из массива приводит к вставке «пустых» узлов - PullRequest
0 голосов
/ 11 ноября 2018

Цель моего кода - импортировать treeNodes из массива. Проблема в том, что даже при создании новых узлов дерева я обязательно установил root-> left и root-> right как NULL.

Когда я пересекаю дерево и оказываюсь у листьев дерева, левый и правый члены все еще НЕ НУЛЬТЫ.

treeNode* import_treeNode(treeNode* root, int nodes[], int curr_i, int size){
    if (curr_i < size){
        treeNode* newNode = new treeNode;
        root = newNode;
        root->value = nodes[curr_i];
        if (2 * curr_i + 1 < size){
            root->left = import_treeNode(root->left, nodes, 2 * curr_i + 1, size);
        } else {
            root->left = NULL;
        }
        if (2 * curr_i + 2 < size){
            root->right = import_treeNode(root->right, nodes, 2 * curr_i + 2, size);
        } else {
            root->right = NULL;
        }
        return root;
    } else {
        return NULL;
    }

}

1 Ответ

0 голосов
/ 11 ноября 2018

При назначении в корень:

root = newNode;

Вы теряете корневой узел, который передается функции. Так, например, здесь:

root->left = import_treeNode(root->left, nodes, 2 * curr_i + 1, size);

Недопустимый корень слева, который вы передаете рекурсивному вызову.

Возможно, вы можете использовать newNode во всей функции вместо назначения ее корню и использования корня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...