Доброго времени суток, решил начать делать акинатор, простенький
так вот, просто тренируюсь работать с деревьями, и столкнулся с проблемой вычитывания дерева из файла
Записать выходит, вроде верно
а вычитать-нет(
вот код, может увидете ошибку(
*это в мейне присваиваю корню значение и выделяю память*
akinator = fopen("trees.txt", "w");
root = (akinator_node*)malloc(sizeof(akinator_node));
root_reade= (akinator_node*)malloc(sizeof(akinator_node));
root->key = 20;
root->left = NULL;
root->right = NULL;
функция вставки элемента
akinator_node* insert(akinator_node* root, int key)
{
if (root == nullptr)
{
root = (akinator_node*)malloc(sizeof(akinator_node));
root->key = key;
root->left = NULL;
root->right = NULL;
return root ;
}
if (key<root->key)
{
if (root->left == NULL)
{
root->left = (akinator_node*)malloc(sizeof(akinator_node));
root->left->left = NULL;
root->left->right = NULL;
root->left->key = key;
return root;
}
insert(root->left, key);
}
else
{
if (root->right == NULL)
{
root->right = (akinator_node*)malloc(sizeof(akinator_node));
root->right->left = NULL;
root->right->right = NULL;
root->right->key = key;
return root;
}
insert(root->right, key);
}
}
функции записи и чтения
void write_from_file(akinator_node *root, FILE*akinator)
{
if (root == NULL)
{
fprintf(akinator, "%d ", MARK);
return;
}
else
{
fprintf(akinator, "%d ", root->key);
write_from_file(root->left, akinator);
write_from_file(root->right, akinator);
}
}
void reader_from_file(akinator_node *root, FILE*akinator)
{
int val = 0;
if (!fscanf(akinator, "%d ", &val) || val == MARK)
return;
insert(root,val);
reader_from_file(root->left, akinator);
reader_from_file(root->right, akinator);
}