This commit is contained in:
Alina Konoval 2025-11-20 20:27:55 +01:00
parent 2f4cdb9d7c
commit c11006e42b

View File

@ -37,6 +37,19 @@ Node* readTree() {
return x; // vrátime uzol return x; // vrátime uzol
} }
int valid(Node *x) {
if (!x) return 0;
if (x->leaf) {
return x->a == NULL && x->n == NULL;
}
if (!x->a || !x->n) return 0;
return valid(x->a) && valid(x->n);
}
// funkcia na spočítanie listov v strome // funkcia na spočítanie listov v strome
int count(Node *x) { int count(Node *x) {
if (!x) return 0; // prázdny uzol = 0 if (!x) return 0; // prázdny uzol = 0
@ -85,11 +98,17 @@ int main() {
Node *root = readTree(); // načítame strom zo vstupu Node *root = readTree(); // načítame strom zo vstupu
printf("Expert z bufetu to vie.\n"); // vždy vypíšeme tento riadok printf("Expert z bufetu to vie.\n"); // vždy vypíšeme tento riadok
if (!root) { // ak strom je prázdny alebo chybne načítaný if (!root || !valid(root)) {
printf("Chybna databaza\n"); printf("Chybna databaza\n");
freeTree(root);
return 0; return 0;
} }
fgets(s, MAX, stdin); // prečítame prázdny riadok medzi databázou a vstupom používateľa if (!fgets(s, MAX, stdin) || s[0] != '\n') {
printf("Chybna databaza\n");
freeTree(root);
return 0;
}
// prečítame prázdny riadok medzi databázou a vstupom používateľa
int k = count(root); // spočítame počet listov (druhov tovaru) int k = count(root); // spočítame počet listov (druhov tovaru)