Я пытаюсь распечатать порядок следования BST в выходной файл. Однако иногда я получаю странные символы вместо стандартного.
Я попытался выделить дополнительное место для char arr [], но это ничего не меняет.
РЕДАКТИРОВАТЬ: я изменил код и попытался разделить его на две части. Первый - метод назначает каждый узел массиву узлов в порядке уровней и возвращает этот массив. И два, другой массив, который записывает содержимое возвращаемых значений в файл. На этот раз я получаю 2 ошибки.
ошибка: несовместимые типы при назначении типу "struct bstNode *" из типа "bstNode"
ошибка: несовместимые типы при назначении типу "struct bstNode *" из типа "bstNode"
void traverseTree(bstNode *root){
FILE *file;
file = fopen("newFile", "w");
char *arr;
arr = (char*)malloc(10000 * sizeof(char));
if(root == NULL)
return;
traverseTree(root->left);
fgets(arr, 100, stdin);
fprintf(file, arr);
traverseTree(root->right);
}
Новый код ниже
bstNode* traverseTree(bstNode *root, int i){
bstNode *arr[100];
if(root == NULL)
return;
traverseTree(root->left, i);
arr[i] = root;
++i;
traverseTree(root->right, i);
return *arr;
}
void writeToFile(bstNode *root, char *outputFileName){
FILE *file;
file = fopen("newFile", "w");
bstNode *arr = traverseTree(root, 0);
int i = 0;
root = arr[i];
while(root!= NULL){
fprintf(file, root->data);
++i;
root = arr[i];
}
}