двоичное дерево не перестраивается из файла - PullRequest
0 голосов
/ 17 марта 2012

Я новичок в структурах данных, и нам поручили сделать игру на угадывание, используя реализацию двоичного дерева. Я выполнил поток программы без реализации файла. Я предварительно сохранил бинарное дерево во внешнем файле, теперь у меня проблема с восстановлением дерева из файла у меня в файле есть:

Это Ангел Локсин ?: # Нененг Б? Это Сэм Пинто? ## Белая красавица? Мариан Ривера? ## HotandSexy? Это Кристина Рейес? ###

"#" для узла NULL.

У меня также есть мой код. Я следую алгоритму, который дал мне мой профессор. Я искал в интернете и дал мне тот же алгоритм, что и мой проф. Моя проблема с каждой третьей ненулевой информацией, которая вылетает из программы. Я думаю, что основной причиной сбоя является узел, который не был установлен в нуль после вставки третьих ненулевых данных. Если это так, как я могу установить его в NULL, чтобы моя программа не потерпела крах. Я назначил данные из файла в массив строк и установил «\ 0» в последнем индексе массива.

void read(node *temp)
{
    while(array[j]=="#")
        j++;

    if(array[j]=="\0")
        return;

    node *nNode;
    nNode = new node;
    nNode->yes=NULL;
    nNode->no=NULL;
    nNode->data=array[j];
    j++;
    temp=nNode;
    read(temp->yes);
    read(temp->no);
}

1 Ответ

0 голосов
/ 17 марта 2012

Ваша проблема в определении вашей функции чтения. Я предполагаю, что идея заключается в том, что «temp» является выходным параметром типа «node *». Но это не то, что вы написали. Вам нужно иметь указатель или ссылку на параметр "node *", например, например. так:

void read(node** temp)

Затем настройте остальную часть кода так, чтобы он компилировался путем правильной (де) ссылки. Это должно решить вашу аварию.

...