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) {
|
||||
char buffer[SIZE]; // Буфер для зберігання рядка
|
||||
if (fgets(buffer, SIZE, stdin) == NULL || buffer[0] == '\n') {
|
||||
return NULL; // Якщо рядок порожній або не вдалося прочитати, повертаємо NULL
|
||||
struct tree* read_tree() {
|
||||
char buffer[SIZE];
|
||||
memset(buffer, 0, SIZE);
|
||||
|
||||
// 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)); // Створюємо новий вузол
|
||||
if (node == NULL) {
|
||||
return NULL; // Якщо пам'ять не вдалося аллокувати, повертаємо NULL
|
||||
// Copy the input line into the node's value
|
||||
memcpy(node->value, buffer, SIZE);
|
||||
|
||||
// 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
|
||||
node->id = (*counter)++; // Присвоюємо унікальний ідентифікатор вузла
|
||||
// If not a leaf, recursively read the left and right child nodes
|
||||
node->left = read_tree(); // Left child (yes answer)
|
||||
node->right = read_tree(); // Right child (no answer)
|
||||
|
||||
// Якщо це не лист, то читаємо лівий та правий підвузли
|
||||
if (buffer[0] != '*') {
|
||||
node->left = read_tree(counter); // Рекурсивно читаємо лівий підвузол
|
||||
node->right = read_tree(counter); // Рекурсивно читаємо правий підвузол
|
||||
}
|
||||
|
||||
return node; // Повертаємо створений вузол
|
||||
return node;
|
||||
}
|
||||
|
||||
int main() {
|
||||
|
Loading…
Reference in New Issue
Block a user