Add a4/program.c
This commit is contained in:
parent
b693073966
commit
03a427d1f9
68
a4/program.c
Normal file
68
a4/program.c
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
// Funkcia na overenie, či pole spĺňa podmienku binárnej minimálnej kopovitosti
|
||||||
|
bool is_min_heap(int arr[], int n) {
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
int left = i * 2 + 1;
|
||||||
|
int right = i * 2 + 2;
|
||||||
|
|
||||||
|
// Kontrola ľavého syna
|
||||||
|
if (left < n && arr[left] < arr[i]) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Kontrola pravého syna
|
||||||
|
if (right < n && arr[right] < arr[i]) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rekurzívna funkcia na výpis binárneho stromu v "preorder" poradí
|
||||||
|
void print_preorder(int arr[], int n, int index, int level) {
|
||||||
|
if (index >= n) return;
|
||||||
|
|
||||||
|
// Výpis aktuálneho uzla s medzerami podľa úrovne
|
||||||
|
for (int i = 0; i < level; i++) {
|
||||||
|
printf(" ");
|
||||||
|
}
|
||||||
|
printf("%d\n", arr[index]);
|
||||||
|
|
||||||
|
// Rekurzívne volania pre ľavého a pravého syna
|
||||||
|
print_preorder(arr, n, index * 2 + 1, level + 1); // Ľavý syn
|
||||||
|
print_preorder(arr, n, index * 2 + 2, level + 1); // Pravý syn
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
char input[256];
|
||||||
|
int arr[100];
|
||||||
|
int n = 0;
|
||||||
|
|
||||||
|
// Načítanie vstupu
|
||||||
|
printf("Zadajte čísla oddelené medzerou: ");
|
||||||
|
if (!fgets(input, sizeof(input), stdin)) {
|
||||||
|
printf("Chyba pri načítaní vstupu.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parsovanie vstupu
|
||||||
|
char *token = strtok(input, " ");
|
||||||
|
while (token) {
|
||||||
|
arr[n++] = atoi(token);
|
||||||
|
token = strtok(NULL, " ");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Overenie, či je to binárna kopa
|
||||||
|
if (is_min_heap(arr, n)) {
|
||||||
|
printf("Je to taka kopa:\n");
|
||||||
|
print_preorder(arr, n, 0, 0); // Výpis v "preorder" poradí
|
||||||
|
} else {
|
||||||
|
printf("Nie je kopa.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user