Update cv7/program.c
This commit is contained in:
parent
85ccde403a
commit
99de8b201c
@ -75,27 +75,34 @@ void run_system(struct tree *node) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Функція для читання дерева з вводу
|
// Функція для читання дерева з вводу
|
||||||
struct tree* read_tree(int *counter) {
|
struct tree* read_tree() {
|
||||||
char buffer[SIZE]; // Буфер для зберігання рядка
|
char buffer[SIZE];
|
||||||
if (fgets(buffer, SIZE, stdin) == NULL || buffer[0] == '\n') {
|
memset(buffer, 0, SIZE);
|
||||||
return NULL; // Якщо рядок порожній або не вдалося прочитати, повертаємо NULL
|
|
||||||
|
// Read a line from stdin
|
||||||
|
char* r = fgets(buffer, SIZE, stdin);
|
||||||
|
assert(r); // Ensure reading was successful
|
||||||
|
|
||||||
|
// Allocate memory for a new tree node
|
||||||
|
struct tree* node = calloc(1, sizeof(struct tree));
|
||||||
|
if (!node) {
|
||||||
|
printf("Memory allocation failed!\n");
|
||||||
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct tree *node = calloc(1, sizeof(struct tree)); // Створюємо новий вузол
|
// Copy the input line into the node's value
|
||||||
if (node == NULL) {
|
memcpy(node->value, buffer, SIZE);
|
||||||
return NULL; // Якщо пам'ять не вдалося аллокувати, повертаємо NULL
|
|
||||||
|
// If the line is a leaf node (starts with '*'), no further questions are needed
|
||||||
|
if (buffer[0] == '*') {
|
||||||
|
return node; // Leaf node, no need to read further
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy(node->value, buffer); // Копіюємо значення в поле value
|
// If not a leaf, recursively read the left and right child nodes
|
||||||
node->id = (*counter)++; // Присвоюємо унікальний ідентифікатор вузла
|
node->left = read_tree(); // Left child (yes answer)
|
||||||
|
node->right = read_tree(); // Right child (no answer)
|
||||||
|
|
||||||
// Якщо це не лист, то читаємо лівий та правий підвузли
|
return node;
|
||||||
if (buffer[0] != '*') {
|
|
||||||
node->left = read_tree(counter); // Рекурсивно читаємо лівий підвузол
|
|
||||||
node->right = read_tree(counter); // Рекурсивно читаємо правий підвузол
|
|
||||||
}
|
|
||||||
|
|
||||||
return node; // Повертаємо створений вузол
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
|
Loading…
Reference in New Issue
Block a user