a4
This commit is contained in:
parent
a4f237c52b
commit
1def797a53
61
a4/program.c
61
a4/program.c
@ -0,0 +1,61 @@
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
// Funkcia na overenie, či je pole binárna minimálna kopa
|
||||
bool is_min_heap(int arr[], int n) {
|
||||
for (int i = 0; i <= (n - 2) / 2; i++) {
|
||||
int left = 2 * i + 1;
|
||||
int right = 2 * i + 2;
|
||||
|
||||
if (left < n && arr[i] > arr[left]) {
|
||||
return false;
|
||||
}
|
||||
if (right < n && arr[i] > arr[right]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Funkcia na vypísanie stromu v preorder poradí
|
||||
void preorder(int arr[], int n, int index, int level) {
|
||||
if (index >= n) {
|
||||
return;
|
||||
}
|
||||
for (int i = 0; i < level; i++) {
|
||||
printf(" ");
|
||||
}
|
||||
printf("%d\n", arr[index]);
|
||||
|
||||
preorder(arr, n, 2 * index + 1, level + 1); // Ľavý syn
|
||||
preorder(arr, n, 2 * index + 2, level + 1); // Pravý syn
|
||||
}
|
||||
|
||||
int main() {
|
||||
int arr[100], n = 0;
|
||||
char input[1000];
|
||||
|
||||
// Načítanie vstupu
|
||||
if (fgets(input, sizeof(input), stdin)) {
|
||||
char *ptr = input;
|
||||
while (sscanf(ptr, "%d", &arr[n]) == 1) {
|
||||
n++;
|
||||
while (*ptr != ' ' && *ptr != '\0') {
|
||||
ptr++;
|
||||
}
|
||||
if (*ptr == ' ') {
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Skontrolovanie, či je to binárna kopa
|
||||
if (is_min_heap(arr, n)) {
|
||||
printf("Je to taka kopa:\n");
|
||||
preorder(arr, n, 0, 0);
|
||||
} else {
|
||||
printf("Nie je kopa.\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user